【问题标题】:Adding SVG line element to line chart将 SVG 线元素添加到折线图
【发布时间】:2018-01-29 17:57:31
【问题描述】:

使用nvd3,我创建了一个简单的交互式折线图。我现在想在图表中添加svg line 以显示基线。

我有一个函数,当被调用时,它会构建并放置一个折线图:

function _buildGraph() {
  nv.addGraph(function() {
    chart = nv.models.lineChart()
      .options({
        duration: 300,
        useInteractiveGuideline: true
      });

    chart.xAxis
      .tickFormat(function(d) {
        return null
      })
      .staggerLabels(false);

    chart.yAxis
      .tickFormat(function(d) {
        if (d == null) {
          return 'N/A';
        }
        return d3.format(',.1f')(d);
      })
      .tickValues([0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5]);
    data = _sortData();

    // line code added here 

    d3.select('#potassium-profiler-container svg')
      .datum(data)
      .call(chart);

    nv.utils.windowResize(chart.update);
    return chart;
  });
}

为了添加这一行,我在上面的函数中添加了以下代码:

var line = d3.select('#potassium-profiler-container svg').append('line')
  .attr('x1', chart.xAxis.scale()(0))
  .attr('x2', chart.xAxis.scale()(100))
  .attr('y1', chart.yAxis.scale()(4.5))
  .attr('y2', chart.yAxis.scale()(4.5))
  .attr('stroke-width', 2)
  .attr('stroke', 'red')

鉴于我已将 y1 属性指定为 4.5,我希望 line 元素从图表 svg 中的该位置开始。可悲的是,事实并非如此。

请参阅here 了解该问题的最小示例。

正如您将看到的那样,该行实际上显示在比指定位置略高的位置,所以我想知道是否可能有一些我没有理解的边距?

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript d3.js svg nvd3.js


    【解决方案1】:

    更新了您的plunk。该图表绘制在一个已翻译的子组中。因此,您需要将您的线路添加到该组(我所做的),或翻译相同数量的线路(更难同步):

    var line = d3.select('.nv-lineChart').append('line')
                .attr('x1', chart.xAxis.scale()(0))
                .attr('x2', chart.xAxis.scale()(100))
                .attr('y1', chart.yAxis.scale()(4.5))
                .attr('y2', chart.yAxis.scale()(4.5)) 
                .attr('stroke-width', 2)
                .attr('stroke', 'red') 
    

    【讨论】:

    • 啊啊啊有道理。谢谢!!!附带说明一下,我的最终目标是拥有某种可以沿 y 轴拖动的圆形元素,即 SVG 线。使用您的洞察力,我设法沿 y 轴 (jsfiddle.net/k150zs6g/2) 动态移动该线,但是有什么想法可以使用圆形元素来做到这一点吗?像这样:imgur.com/a/170dt
    • 当然,您只需要附加一个circle 而不是line,并调整cy(中心y)属性以匹配您的行高
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多