下面是Chart.js
中的标准示例:linear gradient。当我设置beginAtZero: false
选项时,渐变效果良好。然而,当我设置选项beginAtZero: true
时,梯度不会考虑最低值。它从图表底部开始,那里没有数据。
如何改变函数,使梯度考虑最低值的位置?
我试着计算了一下位置:
gradient = ctx.createLinearGradient(0,
Math.max(...chart.getDatasetMeta(0).data.map(item => item.y)), 0,
Math.min(...chart.getDatasetMeta(0).data.map(item => item.y)));
然而,当调用函数getDradient()
时,数据点位置不可用。
请看代码笔:https://codepen.io/miloslav/pen/YzdwLOe
1条答案
按热度按时间bmvo0sr51#
使用可脚本化的
borderColor: function(context, opts)
,您将chart
、图表示例、chartArea
和canvas 2d上下文提取为:您还可以找到以下内容:
这是严格的方法,适用于具有多个y轴的图表;在实践中,您可能知道ID,在这种情况下,在那里;这只是默认轴,ID为
y
及其
min
和max
值,scaleMin
和scaleMax
,并从中得到数据的最小值和最大值
dataMin
和dataMax
。这些数字应该在线性垂直梯度的定义中取代
0
和1
,因此第一种颜色对应于最小值,最后一种颜色对应于最大值。完整代码来自您的codepen:
codepen fork。