【问题标题】:draw horizontal lines for bars in nvd3 multi bar chart在 nvd3 多条形图中为条形绘制水平线
【发布时间】:2017-03-29 23:15:45
【问题描述】:

我想为这个 nvd3 多条图表中的每个条绘制 2 条水平线

这里是fiddle

我有几个问题

  1. 为什么yValueScale(0)不是从剧情的0开始
  2. 如何从条形图开始绘制线条? xValueScale("A") 不是从A 栏的开头开始的
  3. 如何知道条的宽度以绘制长度等于条宽的线

【问题讨论】:

    标签: javascript d3.js bar-chart nvd3.js


    【解决方案1】:

    您将该行附加到错误的“容器”。 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

    【讨论】:

    • 谢谢!您还可以帮我动态获取条的宽度吗?
    • @Dinesh,假设所有条的宽度相同,它很简单:d3.select("#chart1 .nv-bar").attr("width")
    • 你有这方面的教程吗? (点)表示法 - 我不太清楚它在 d3.select() 中是如何工作的
    • @Dinesh,这是一个 CSS 选择。 . 表示类名,# 表示 id。在上面,它找到了 id 为“chart1”的元素,然后找到了它的子元素,它的类为“nv-bar”。 mozilla docs 一如既往地出色。
    • 谢谢,我再次尝试使用 nvd3 离散条形图,但无法完全获得制作绘图的确切容器 - jsfiddle.net/dm89/qd36csux/3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    相关资源
    最近更新 更多