我正在使用几个C3图表进行数据可视化。其中一个是一对仪表,应该使用我在线获取的JSON文件进行动态更新。我的问题是仪表值在更新时重叠,即当它获取65的读数时,以前的0值仍然存在。
我正在使用C3js版本0.4.7。
我的代码如下。请帮忙:
var gauge = c3.generate({
bindto: d3.select('div#MeterGauge'),
data: {
url: 'data/data.json',
mimeType: 'json',
type: 'gauge'
},
gauge: {
// label: 'One Value',
// min: 0,
// max: 100,
// units: '%',
// width: 50
},
color: {
pattern: ['#FF0000', '#F97600', '#F6C600', '#60B044'], // the three color levels for the percentage values.
threshold: {
// unit: 'value', // percentage is default
// max: 200, // 100 is default
values: [30, 60, 90, 100]
}
},
size: {
height: 200
}
});
setTimeout(function () {
gauge.load({
url: 'data/data.json',
mimeType: 'json',
keys: {
value: ['Another Value']
}
});
}, 2000);;
最佳答案
我可以使用相同版本的c3js,并使Gauge也可以处理XHR请求,请参阅jsfiddle中的工作代码:
var gauge = c3.generate({
bindto: d3.select('div#MeterGauge'),
//data: {
// url: 'data/data.json',
// mimeType: 'json',
// type: 'gauge'
//},
data: {
columns: [
['data', 91.4]
],
type: 'gauge',
onclick: function (d, i) { console.log("onclick", d, i);},
onmouseover: function (d, i) { console.log("onmouseover", d, i);},
onmouseout: function (d, i) { console.log("onmouseout", d, i); }
},
gauge: {
// label: 'One Value',
// min: 0,
// max: 100,
// units: '%',
// width: 50
},
color: {
pattern: ['#FF0000', '#F97600', '#F6C600', '#60B044'], // the three color levels for the percentage values.
threshold: {
// unit: 'value', // percentage is default
// max: 200, // 100 is default
values: [30, 60, 90, 100]
}
},
size: {
height: 200
}
});
setTimeout(function () {
gauge.load({
columns: [['data', 10]]
});
}, 1000);
//setTimeout(function () {
// gauge.load({
// url: 'data/data.json',
// mimeType: 'json',
// keys: {
// value: ['Another Value']
// }
// });
//}, 2000);
new Request.JSON({
url: '/echo/json/',
data: {
json: JSON.encode({
text: 'some text',
array: [1, 2, 'three'],
object: {
par1: 'another text',
par2: [3, 2, 'one'],
par3: {}
},
percent: 44.8
}),
delay: 3
},
onSuccess: function(response) {
update_gauge(response, $('post'));
}
}).send();
var update_gauge = function(obj, result) {
console.log('response '+obj.percent);
gauge.load({
columns: [['data', obj.percent]]
});
};
http://jsfiddle.net/chetanbh/Lxkhzfv0/11/
请提供或分叉并修改上面的提琴,以提供越野车代码。
关于javascript - C3js量规值重叠,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27404452/