我正在尝试使用 C3.js(c3js.org) 制作图表,但我想指定除数据(以及该图表特有的任何其他微小偏差)之外的所有内容,然后将其重新用于该变体的所有图表(a图表的具体配置)。
我为 C3.js 找到的所有文档和所有示例仅涉及如何制作单个图表。将其应用于多个图表意味着大量重复代码,并且在进行更改时不能确保一致性。
我发现的唯一与此相关的是在 D3.js(d3js.org) 中制作可重用图表的概念, C3.js 使用的底层库,以及受该概念启发的实现。这并没有真正帮助我,因为我想要 C3.js 提供的更高级别的抽象,但这些可能会让您知道我在寻找什么。
我没有找到这方面的信息,但一个想法是制作一个基于现有类型但还包括额外配置的图表类型(例如,根据现有的“条形”图表制作一个名为“水平条”的新图表类型类型)。
这是我制作的一个图表,bindto
是columns
这个图表的独特部分,其余部分应该是模板的一部分,但我不知道如何。
var chart = c3.generate({
bindto: '#chart',
data: {
columns: [
['data1', 125.2],
['data2', 282.7],
['data3', 3211.1],
['data4', 212.2],
['data5', 131.1],
['data6', 329.7]
],
type: 'pie',
order: null
},
pie: {
label: {
format: function (value, ratio, id) {
return d3.format('.1f')(ratio*100)+'%'; //percent with one decimal
}
}
},
tooltip: {
format: {
value: function (value, ratio, id, index) {
return value+'mkr ('+d3.format('.1f')(ratio*100)+'%)'; //example: 155.2mkr (3.3%)
}
}
},
legend: {
item: {
onclick: function () {} //disable clicking to hide/show parts of the chart
}
}
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.9/c3.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.9/c3.min.js"></script>
<div id="chart"></div>