问题描述
我想使用d3(如所附图片)创建拆分差异条形图。我有2个输入数组,一个用于y轴标签,另一个用于数据,如下所示:
data = [[35,90],[60,45],[80,[95,90]]
months = ["Jan - 20","Feb - 20","Mar - 20","Apr -20"]
我尝试过d3-observable。随意分叉这个可观察的对象。我坚持使用比例尺正确渲染嵌套数据。任何帮助将不胜感激。
谢谢
解决方法
您确实可以避免SVG并使用原始HTML绘制类似的图表。当然,这并不意味着您不能使用d3
来简化生活-它具有简化比例尺处理,日期格式设置和元素创建的方法,而这些方法绝不限于SVG。例如,您可以创建第一个条形图及其标签,如下所示:
d3.select("#first-bar-column")
.selectAll("div")
.data(data)
.enter()
.append("div")
.style("width",d => `${xScale(+d.A)}px`)
.classed("first-bar",true)
.append("p")
.classed("label",true)
.text(d => d.A);
请查看此fiddle,以获取完整示例。如果希望将任何“特殊效果”应用于悬停/单击时的整个行,则需要根据元素索引分配一些公共类:.attr("class",(d,i) => `row${i}`)