【发布时间】: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