【问题标题】:Adding a horizontal line to d3 graph displays at the wrong value向 d3 图形添加水平线显示错误的值
【发布时间】:2015-03-13 03:29:24
【问题描述】:

我试图在我的图表中添加一条水平线,相对于 y 轴值,问题是它们显示在错误的位置。

2 行应显示在相对于 y 轴值的值 90 和 140 处。

我用来添加该行的代码如下:

if (before_meal !== null || after_meal !== null) {
                    svg.append("svg:line")
                        .attr("x1", 0)
                        .attr("x2", width)
                        .attr("y1", before_meal)
                        .attr("y2", before_meal)
                        .style("stroke", "rgb(189, 189, 189)");

                    svg.append("svg:line")
                        .attr("x1", 0)
                        .attr("x2", width)
                        .attr("y1", after_meal)
                        .attr("y2", after_meal)
                        .style("stroke", "rgb(189, 189, 189)");
}

请在此处查看我的工作示例:JSFiddle

【问题讨论】:

  • 随意将 css 更改为您喜欢的颜色。要有创意

标签: javascript angularjs svg d3.js


【解决方案1】:

在你的代码中你有这个:

var y = d3.scale.linear()
       .range([height, 0]);

这将返回一个函数y,它将像素空间映射到您的绘图坐标空间。

所以当你这样做时:

.attr("y1", before_meal)

您告诉 d3 在 90“像素”处放置一条线。而是使用:

.attr("y1", y(before_meal))

这告诉 d3 将 90 个 y 轴单位转换为适当的像素。

更新fiddle

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-09-07
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2018-09-17
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多