d3 JSON多折线图
d3 JSON multiple line chart
我正试图从JSON blob中制作一个具有多行的绘图,看起来像:
{"2007": [{"val":10, "mon":10}, {"val":20, "mon":11}, {"val":40, "mon":12}, ...],
"2008": [{"val":20, "mon":8}, {"val":20, "mon":9}, {"val":40, "mon":10}, ...],
...
"2012": [{"val":40, "mon":8}, {"val":50, "mon":9}, {"val":60, "mon":10}, ...]
}
数据基本上是每年的月度总数,有些年份没有某些月份的数据。我不能确切地弄清楚如何解析数据d3虽然。我尝试了各种方法,比如
var line = d3.svg.line()
.interpolate("basis")
.x(function(d) { return x(d.mon); })
.y(function(d) { return y(d.val); });
svg.selectAll(".line")
.data(series)
.enter().append("path")
.attr("class", "line")
.attr("d", line);
但是我似乎无法将数据放入SVG行。有什么建议吗?是否有更好的方式来构建JSON?
下面是解决方案,以防其他人遇到这个问题。诀窍是传递一个函数,该函数返回path元素"d"属性中关联数组中的值。
entries = d3.entries(data);
var colors = d3.scale.category20()
.domain(d3.keys(data));
var line = d3.svg.line()
.interpolate("basis")
.x(function(d) { return x(d.month) })
.y(function(d) { return y(d.value) });
svg1.selectAll(".line")
.data(entries)
.enter().append("path")
.attr("class", "line")
// function(d), not just line function
.attr("d", function(d){ return line(d.value); })
.attr("stroke", function(d) { return colors(d.key) });
这个答案也有一些帮助:使用嵌套数据与javascript D3问题
我猜这里最大的问题是您从一个对象开始,而不是一个数组。d3.data
接受一个数组,而不是一个对象,因此您可能需要这样设置数据:
[
[{"val":10, "mon":10}, {"val":20, "mon":11}, {"val":40, "mon":12}, ...],
[{"val":20, "mon":8}, {"val":20, "mon":9}, {"val":40, "mon":10}, ...],
...
]
如果您需要将当前数据转换为这种格式,请查看d3.entries
,它将为您提供一个包含键和点数组的数组:
[
{
key: "2008",
value: [{"val":10, "mon":10}, {"val":20, "mon":11}, {"val":40, "mon":12}, ...]
},
{
key: "2008",
value: [{"val":20, "mon":8}, {"val":20, "mon":9}, {"val":40, "mon":10}, ...]
},
...
]
请看下面的图,使用上面的第一种数据格式:http://jsfiddle.net/nrabinowitz/kmmyc/
相关文章:
- 用谷歌图表json数据绘制简单的折线图,日期在x轴上
- D3js:如何使用 JSON 数据绘制多系列折线图
- 来自 JSON 的 Dojo 折线图,具有多个系列和公共 x 轴
- 带有谷歌图表的JSP JSON - 折线图
- 如何修改谷歌折线图的 JSON 字符串
- 在 flot.js 中绘制折线图和条形图以获取 JSON 数据
- D3 中 JSON 数据的折线图
- gRaphael折线图:用JSON数据填充弹出标签而不是x&y坐标
- 为折线图提供一个本地json文件
- 本地折线图不同&使用NVD3创建远程json文件
- 将JSON文件加载到highcharts中以绘制折线图
- 在nvd3结构中使用d3和json的多折线图
- Highcharts动态折线图从json
- 多折线图D3.js Json数据结构
- 如何使用Json文件绘制折线图
- 1 个 html 页面上有 2 个不同的谷歌图表(1 个带有 JSON 的折线图和 3xgauge 硬编码)
- 我可以将此 JSON 提供给 D3 以绘制折线图吗?
- d3 JSON多折线图
- 如何在折线图中获得所有json值
- js在折线图上绘制两个json数据集