如何将Y 0轴值与Y 2 0轴值对齐?
请参阅jsFiddle以了解。
我在斧头上尝试了center:0
选项,但我不希望图中心有0 ..
var chart = c3.generate({
data: {
columns: [
['data1', 2000, 350, 300, -200, -50, 0],
['data2', 130, 100, 140, 200, 150, 50]
],
types: {
data1: 'line',
data2: 'bar'
},
axes:{
data1:'y',
data2:'y2'
}
},
axis: {
y: {
padding: {bottom: 0}
},
y2: {
show:true,
padding: {bottom: 0}
},
x: {
min: 0,
show: true
}
},
grid: {
x: {
show: false
},
y: {
show: false,
lines: [
{value: 0.0, text: 'i want 0 here ->', class:'red'}
]
}
}
});
感谢。
答案 0 :(得分:1)
一般情况下,你想要相同比例的轴范围高于和低于零,这就是为什么min:-20适用于这个特定的例子
在您生成图表后,这通常会有效:
var d1 = d3.extent(chart.data.values("data1"));
var d2 = d3.extent(chart.data.values("data2"));
if (d2[0] < 0 || d1[0] < 0) {
var prop1 = d1[0] < 0 ? -(d1[1] / d1[0]) : Math.Infinity;
var prop2 = d2[0] < 0 ? -(d2[1] / d2[0]) : Math.Infinity;
if (prop1 > prop2) {
d1[0] = -(d1[1] / prop2);
} else {
d2[0] = -(d2[1] / prop1);
}
chart.axis.range({
min: {y: d1[0], y2: d2[0]},
max: {y: d1[1], y2: d2[1]}
});
}
基本上,如果其中一个(或两个)系列具有负值,则它会使用最小/最大轴设置将两个系列缩放为具有相同的正负范围比例。这意味着零位于
的同一垂直点