将数据绘制到C3的最佳实践
Best practices for plotting data to C3
我已经花了好几天的时间试图找到以C3.js满意的方式格式化数据的方法,我已经尝试了很多方法,比如逐行聚合、内部和外部联接(感谢你们中的一些好心人的帮助),以及类似的努力。我仍然没有找到一个好的方法,这是一个很大的痛苦。我无法想象没有比这更简单的方法了,我确信我只是还没有想出。
一个例子。我想要一个每年包含一行的折线图。x轴是月份(从1到12),y轴是收入。
我有这个数据:
{"YEAR":"2009","MONTH":"1","REVENUE":"7533"},{"YEAR":"2009","MONTH":"1","REVENUE":"8406"},{"YEAR":"2009","MONTH":"1","REVENUE":"799"},{"YEAR":"2009","MONTH":"3","REVENUE":"11099"}
并将其汇总,以便计算每年+每月的收入,将其转化为:
[{"year":"2009","month":"1","revenue":16739},{"year":"2009","month":"2","revenue":1406},{"year":"2009","month":"3","revenue":11099},{"year":"2009","month":"4","revenue":7055}]
现在我知道我必须把它变成这种格式,以便C3 js以我想要的方式使用它:
[{"month":"1","revenue2009":16739,"revenue2010":16739},{"month":"2","revenue2010":1406},{"month":"3","revenue2009":11099,"revenue2010":16739},{"month":"4","revenue2011":7055}]
此外,我必须以某种方式绕过c3,以便将YEAR显示为相应行的名称——在我看来,这是图表的默认功能。
这样一个小小的转变已经让我头疼,而且花费的时间比我想象的要多得多。有什么帮助吗?此外,这种转换是必要的,还是有一种更简单的方法可以在没有这种转换的情况下将前面提到的两个数据集之一集成到c3中?你能给我一些关于如何处理这些数据的最佳实践吗?谢谢
在这种情况下有两个选项。
您可以设置一个由12个刻度组成的自定义x轴,然后添加数据。
http://jsfiddle.net/fokcat28/
var chart = c3.generate({
bindto: '#chart',
data: {
x: 'x',
columns: [
["x", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
["Revenue 2009", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
["Revenue 2010", 16, 16, 17, 18, 20, 20, 20, 23, 23, 23, 24, 27],
["Revenue 2011", 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 20]
]
},
axis: {
x: {
type: 'category' // this needed to load string x value
}
}
});
诀窍在于类型:"类别"设置,它允许您使用字符串来命名每个刻度。
您也可以在x轴上放置一年(例如2013年),然后为每个月添加日期:
https://jsfiddle.net/dbpngfuf/1/
var chart = c3.generate({
data: {
x: 'x',
columns: [
['x', '2013-01-01', '2013-02-01', '2013-03-01', '2013-04-01', '2013-05-01', '2013-06-01', '2013-07-01', '2013-08-01', '2013-09-01', '2013-10-01', '2013-11-01', '2013-12-01'],
['Revenue 2008', 30, 200, 100, 400, 150, 250],
['Revenue 2010', 130, 340, 200, 500, 250, 350]
]
},
axis: {
x: {
type: 'timeseries',
tick: {
format: '%Y-%m'
}
}
}
});
相关文章:
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 有条件更新d3.js力图中节点的最佳方法
- 为react组件传递道具的最佳方式
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- Angularjs 1.5.x本地化最佳实践
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- MobileFirst:在客户端运行计时器作业-最佳选项
- 如何将我的json结构转换为C3.js所需的列结构
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 从数组中删除元素的最佳方法是:javascript/jquery
- 链接两个网页或网络应用程序的最佳方式
- 什么's是连接供应商js文件的最佳方式
- Express服务器中语言子域的最佳实践
- 将数据绘制到C3的最佳实践