【发布时间】:2013-06-08 16:32:22
【问题描述】:
我目前正在使用 NVD3 制作一些折线图。我想知道是否可以使 y 轴刻度始终从 0 开始。目前它总是从最低的 y 值开始。我曾尝试使用 tickValues 但我不想更改其他值。我还尝试添加一个值为 0 的数据点,但这似乎是一种解决方法,它会影响图表的外观。有什么想法吗?
【问题讨论】:
标签: javascript d3.js nvd3.js
我目前正在使用 NVD3 制作一些折线图。我想知道是否可以使 y 轴刻度始终从 0 开始。目前它总是从最低的 y 值开始。我曾尝试使用 tickValues 但我不想更改其他值。我还尝试添加一个值为 0 的数据点,但这似乎是一种解决方法,它会影响图表的外观。有什么想法吗?
【问题讨论】:
标签: javascript d3.js nvd3.js
您不需要添加“虚拟”数据点,您只需调整刻度的输入域,例如像
chart.yAxis.scale().domain([0, maxValue]);
【讨论】:
maxValue 吗?我正在使用 nvd3 boxplot 并且没有显示异常值。所以我想用图表计算的最大值作为上限。
大多数图表都有一个 forceX 和 forceY 函数,它们采用一组值。你可以这样使用它:
var chart = nv.models.lineChart();
chart.forceX([0, 10])
chart.forceY([-1, 1])
这将确保在您的 xAxis 上始终显示至少 0 和 10,但如果您直接操作它不会限制域。也就是说,如果您执行以下操作:
chart.yAxis.scale().domain([0, maxValue]);
并且您的数据具有负 X 值,它们不会显示在图表上,因为它们会落在指定域之外,但如果您使用 forceX,它们会。
【讨论】:
我发现这个测试页面在计算 nvd3 图表上的属性时非常有用(即使您不使用角度 btw 也适用)
https://krispo.github.io/angular-nvd3/#/lineChart
forceY 旁边的+ 符号
-5 之类的值,然后添加它以立即查看效果(示例图已经显示为零)。【讨论】:
chart.forceX(0) 只能设置最小值
【讨论】: