我已经使用charts JS创建了一个折线图,但我无法应用线条颜色更改。期望应该是:如果y值小于0(零),则该线应为红色,如果大于0(零)绿色。
我在这里创建了我的代码:codesandbox。
我尝试使用数据集段borderColor;如果y值<0,我将颜色设置为红色,否则如果y值>0,颜色为绿色,但它并不像预期的那样工作。
在数据集中,我有{x: 42380, y: negative value (which is near by zero)}
,后面是{x: 42500, y: POSITIVE value(which very first positive value)}]
;这两个点之间的线段显示为红色,尽管从y = -185到0的负部分比从0到y = 2000的正部分短得多
1条答案
按热度按时间ldioqlga1#
根据点的符号改变线颜色的解决方案已经通过将
borderColor
设置为segment
s来实现,并且对于具有相同符号的两端的所有段都工作良好;配置对象为实际的计算在函数
getBorderColor
中实现(从原始的稍微修改,以简化下面我的扩展的介绍):为了适应与x轴相交的线段,我找到的解决方案是将颜色设置为
LinearGradient
,其中有四个color stops,如下表所示:其中
frac
很容易从两点的坐标计算。可以看出,这实际上不是视觉梯度,颜色从“绿色”到“红色”的变化(用作示例)是在同一点完成的,即线段与x轴的交点。下面是代码,注解中有解释:
和原始codesandbox的the fork。