我正在尝试在C3.js图表中换出数据集。
我假设的代码将基于C3文档工作,如下所示:
chart.unload();
chart.load({
columns: [
['data3', 100, 90, 80, 70, 60, 50]
]
});
但这不起作用。您会注意到以下Plunkr上呈现的图形渲染不正确,所以我显然做错了:https://jsfiddle.net/7rfm9om9/
在C3图表中替换数据的惯用方法是什么?
答案 0 :(得分:9)
根据c3文档,执行此操作的方法是使用加载函数的卸载参数。
chart.load({
unload: true,
columns: ['data1', 100]
});
在尝试使用.unload()和.load()时,渲染和动画存在问题。
本说明包含在.unload()文档中:
http://c3js.org/reference.html#api-unload
注意:如果您在卸载之后/之前很快调用[加载],请卸载 应该使用负载的参数。否则将不会呈现图表 正确的,因为动画的[取消]。
完成将在加载数据后调用,但它不会在渲染后调用。 这是因为渲染将在一些过渡后完成并且存在 加载和渲染之间有一段时间差。
根据.load()的文档:
http://c3js.org/reference.html#api-load
如果给出卸载,则在加载新数据之前将卸载数据。如果 如果给定,则将卸载所有数据。如果目标ID为 字符串或数组,将卸载指定的目标。
注意:如果需要卸载某些数据,则应使用卸载 同时。如果您在加载之后/之前很快调用unload API 卸载参数,由于取消,图表将无法正确呈现 动画。
格式将与以下代码段相符:
所有数据
chart.load({
unload: true,
columns: [
['data3', 100, 90, 80, 70, 60, 50]
]
});
指定目标
chart.load({
unload: ['data1', 'data2'],
columns: [
['data3', 100, 90, 80, 70, 60, 50]
]
});
的jsfiddle:
答案 1 :(得分:8)
啊,似乎chart.unload()
做了一些异步工作,如果你以同步方式立即调用chart.load()
,将会破坏图形。
我通过在传递给chart.unload
的{{1}}回调的函数中加载新数据来实现此目的。
done