我的目的是在一个具有不同域的 svg 中绘制多个小条形图,建立在这个例子 http://bl.ocks.org/officeofjane/7315455.
我遇到的主要问题似乎是从输出中提取特定键的值的问题d3.nest
并定义每个密钥对应的域。绘制所有值时会出现问题,这些值的日期是在域中绘制的。由于并非每个键都有对应于所有可能日期的值,因此右侧绘制了一个尾部,这破坏了顺序。您能否告诉我如何修复它,如何从绘制的值集中删除没有相应输出的输入?
结果如下:
https://plnkr.co/edit/KUnMSfJwWan3JaIpZutZ/ https://plnkr.co/edit/KUnMSfJwWan3JaIpZutZ/
数据的形式如下:
CSC 20160919 4.0
MAT 20160923 16.0
在给出的数据示例样本中,有两个日期,并且将为每个小子图绘制两个日期。最好将与特定键相对应的日期分开,以便仅绘制那些有相应分数的日期。
存在一个缺陷:域必须是独立的,而在上面的示例中它们不是。
你能告诉我如何用date
对应于特定的key
定义如下d3.nest
?
代码的相关部分似乎在这里:
x.domain(data.map(function(d) { return d.date; }));
和这里:
svg.selectAll(".bar")
.data(function(d) {return d.values;})
.enter()
.append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.date); })
.attr("width", x.rangeBand())
.attr("y", function(d) { return y(d.score); })
.attr("height", function(d) { return height - y(d.score); })
.attr("fill", function(d) {return color(d.score)})
APPENDIX
以下问题可能有用:
D3.js 将对象绑定到数据并附加每个键 https://stackoverflow.com/questions/12923942/d3-js-binding-an-object-to-data-and-appending-for-each-key
d3.js 中多个分组条形图中的 X,Y 域数据绑定 https://stackoverflow.com/questions/28130411/x-y-domain-data-binding-in-multiple-grouped-bar-charts-in-d3-js?rq=1
您还可以找到有用的以下链接:
分组条形图 https://bl.ocks.org/mbostock/3887051
教程:分组条形图 https://www.dashingd3js.com/lessons/basic-chart-grouped-bar-chart
数据分组 http://learnjsdata.com/group_data.html
假设
我们可以将数据嵌套两次,首先按课程,然后按日期,然后在轴上绘制键的键吗?嵌套是解决问题的最佳方法吗?