Javascript 使用C3JS仅显示Y轴上的最小/最大值
我希望y轴只包含数据的最小/最大值。 我尝试使用d3指令,但没有结果 我看了一下谷歌,但没有找到实现这种行为的答案 代码如下:Javascript 使用C3JS仅显示Y轴上的最小/最大值,javascript,d3.js,c3,Javascript,D3.js,C3,我希望y轴只包含数据的最小/最大值。 我尝试使用d3指令,但没有结果 我看了一下谷歌,但没有找到实现这种行为的答案 代码如下: $.getJSON('assets/json/chartc3.json', function(data) { scene=data; var chart = c3.generate({ bindto: '#chartc3', data: { json: scene,
$.getJSON('assets/json/chartc3.json', function(data)
{
scene=data;
var chart = c3.generate({
bindto: '#chartc3',
data:
{
json: scene,
keys:
{
x: 'round',
value: ['Marketable', 'Total Requested Capacity', 'Your Bid'],
},
types: {
Marketable: 'area'
},
colors: {
Marketable: '#A09FA2',
'Total Requested Capacity': '#272E80',
'Your Bid': '#8EBF60'
}
},
axis:
{
x: {
tick:
{
culling:
{
max: 10
}
},
type: 'category'
},
y:
{
min: 0,
padding : {
bottom : 0
},
tick:
{
values: [[0], [***d3.max(scene)]***],
format: function (d) { return d3.format(',f')(d) +' kWh/h' }
//or format: function (d) { return '$' + d; }
}
}
}.........
我如何实现上述结果?max(scene)返回NaN。问题在于scene不是数组,而是json对象
var k = d3.max([1,5,2])
k will be 5
因此,您需要传递一个组成y序数的元素数组。您需要使用
d3.max(arr, function(d){return numberic value});
或
函数取决于数据的数组元素。我自己使用了一个小函数来计算最大值
var maxs=0;
for (var j=0; j<scene.length; j++) {
var maxtemp=Math.max(scene[j].Marketable, scene[j]['Your Bid'], scene[j]['Total Requested Capacity']);
maxs=Math.max(maxs, maxtemp);
}
var maxs=0;
for(var j=0;jMy json文件包含我需要绘制的不同系列…因此我应该为每个系列创建一个循环并返回数字?我从未使用过此函数。
var maxs=0;
for (var j=0; j<scene.length; j++) {
var maxtemp=Math.max(scene[j].Marketable, scene[j]['Your Bid'], scene[j]['Total Requested Capacity']);
maxs=Math.max(maxs, maxtemp);
}