【发布时间】:2017-03-29 23:15:45
【问题描述】:
我想为这个 nvd3 多条图表中的每个条绘制 2 条水平线
这里是fiddle
我有几个问题
- 为什么
yValueScale(0)不是从剧情的0开始 - 如何从条形图开始绘制线条?
xValueScale("A")不是从A栏的开头开始的 - 如何知道条的宽度以绘制长度等于条宽的线
【问题讨论】:
标签: javascript d3.js bar-chart nvd3.js
我想为这个 nvd3 多条图表中的每个条绘制 2 条水平线
这里是fiddle
我有几个问题
yValueScale(0)不是从剧情的0开始xValueScale("A") 不是从A 栏的开头开始的
【问题讨论】:
标签: javascript d3.js bar-chart nvd3.js
您将该行附加到错误的“容器”。 svg 变量是整个 svg 容器,nvd3 的绘图容器是 g 元素:
<g class="nvd3 nv-wrap nv-multibar" transform="translate(0,0)">
所以,使用:
var g = d3.select("#chart1 svg .nvd3");
g.append("line")
.style("stroke", "#FF7F0E")
.style("stroke-width", "2.5px")
.attr("x1", xValueScale("A"))
.attr("y1", yValueScale(yValue))
.attr("x2", xValueScale("A") + 100)
.attr("y2", yValueScale(yValue));
更新fiddle。
【讨论】:
d3.select("#chart1 .nv-bar").attr("width")
. 表示类名,# 表示 id。在上面,它找到了 id 为“chart1”的元素,然后找到了它的子元素,它的类为“nv-bar”。 mozilla docs 一如既往地出色。