c3js › 值 0 在 Y 和 Y2 之间对齐
c3js › value 0 aligned between Y and Y2
如何将Y 0轴值与Y2 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'}
]
}
}
});
谢谢。
一般来说,您希望轴范围在零以上和以下的比例相同,这就是为什么 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]}
});
}
基本上,如果一个(或两个)系列具有负值,则它使用 min/max 轴设置将两个系列缩放为具有相同比例的正负范围。这意味着零位于两个
的同一垂直点
如何将Y 0轴值与Y2 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'}
]
}
}
});
谢谢。
一般来说,您希望轴范围在零以上和以下的比例相同,这就是为什么 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]}
});
}
基本上,如果一个(或两个)系列具有负值,则它使用 min/max 轴设置将两个系列缩放为具有相同比例的正负范围。这意味着零位于两个
的同一垂直点