javascript - c3.js一致的配色方案

标签 javascript json c3.js

我正在使用c3.js从JSON数据生成2个饼图。数据标签相同,但是两个图表的值不同,因此我得到了差异切片。不幸的是,我也为每个标签设置了不同的配色方案。

有没有办法为两个图表设置一致的配色方案?

我尝试了this,但我想从JSON获取此数据,而不是对颜色代码进行硬编码。

最佳答案

两个数据集中的数据点数量是否相同?标签顺序是否一致?

我假设没有,否则模式数组应该工作。检查您在JSON对象中获得的数据,并查看它们的顺序是否相同。也许一个简单的排序(按标签)会起作用,因为这样可以使它们以正确的顺序排列。

一种选择是设置颜色字典对象,然后在该字典中查找数据点的索引。但是,如果标签的顺序不同,则仅查找索引将不起作用,因为它将返回不同的值。 (我认为这实际上是模式数组正在执行的操作)。因此,您需要存储然后在字典中查找标签。

实际上是这样的:

var colorDictionary = { "label1": "red", "label2": "green" }


说您的原始数据在这样的数组中:

var data1 = [{key: "label1", value: 0.5}, {key: "label2", value: 0.9}]
var data2 = [{key: "label2", value: 0.9}, {key: "label1", value: 1.9}]


然后,您将使用颜色回调,如下所示:

//... for chart based on data1
data: {
   color: function (color, d) {
      return d.id ? colorDictionary[data1[d.index].label] : color;
   }
}




//... for chart based on data2
data: {
   color: function (color, d) {
      return d.id ? colorDictionary[data2[d.index].label] : color;
   }
}

关于javascript - c3.js一致的配色方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810009/

相关文章:

javascript - 制作一个JS纸牌游戏

javascript - 如果没有一堆 if else 语句,我怎么能写这个函数呢?

javascript - 我如何从图表中获取带有 ID 的 SVG?

javascript - ember-cli 插件组件未找到 npm 模块

java - 设计模式——数据到对象

javascript - 为 C3.js 格式化 JSON

javascript - C3js - 仅用于线条的带有数据标签的组合图表

javascript - C3.js 时间序列图表中的自定义颜色

javascript - jquery ui autocomplete with ajax with custom search not working

java - jackson 将数组元素反序列化为特定字段