Highcharts change the line color if its out of the area range(如果线条超出区域范围,HighChart会更改线条颜色)
本文介绍了如果线条超出区域范围,HighChart会更改线条颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
快速浏览HighChart文档,我找不到任何选项来更改超出区域范围的线条的颜色。 有没有人能建议一下解决这个问题的方法。提前谢谢。我试图实现的目标类似于
https://www.highcharts.com/demo/arearange-line
http://jsfiddle.net/277x657h/2/
推荐答案
使用HighchartsZones我们可以按一定的间隔更改颜色。 我正在扩展@KamilKulig's answer above。
如果对点和面积使用线性线,还可以计算面积和线的交点。它应该如下所示:(这里有一个fiddle演示。)
function findAnomalyZones(intervals, values) {
let validColor = '#25cc7b', anomalyColor = '#ff5f5f';
let zones = Array();
let prev = null;
let anomalyType = null; // 1 for above Confidence interval. -1 for below
for (let i = 0; i < values.length; i++) {
let interval = intervals[i], value = values[i];
let zone = {value: value[0]};
// point is an anomaly
if (value[1] < interval[1]) {
anomalyType = -1;
zone.color = anomalyColor;
}
else if (value[1] > interval[2]) {
anomalyType = 1;
zone.color = anomalyColor;
}
else {
zone.color = validColor;
}
// Push prev zone if colors should be different
// Update prev zone
if (prev != null && prev.color != zone.color) {
const interIdx = anomalyType == 1 ? 2 : 1;
let {m: m1, b: b1} = findSlopeAndYIntercept([intervals[i-1][0], intervals[i-1][interIdx]], [interval[0], [interval[interIdx]]]);
let {m: m2, b: b2} = findSlopeAndYIntercept(values[i-1], value);
let {x, y} = findLineIntercept(m1, b1, m2, b2);
prev.value = x
zones.push(prev);
}
prev = zone;
}
zones.push({value: Date.UTC(9999), color: validColor})
return zones
}
function findSlopeAndYIntercept(p1, p2) {
const m = (p2[1] - p1[1]) / (p2[0] - p1[0]);
const b = p1[1] - (m * p1[0])
return {m, b}
}
function findLineIntercept(m1, b1, m2, b2) {
let x = (b2 - b1) / (m1 - m2);
let y = (m1 * x) + b1
return {x, y}
}
let zones = findAnomalyZones(intervals, values);
// PLOT THE HIGHCHART HERE
如果使用样条线,我仍然不确定如何计算交叉点,但这适用于线性图形和面积。
这篇关于如果线条超出区域范围,HighChart会更改线条颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如果线条超出区域范围,HighChart会更改线条颜色
基础教程推荐
猜你喜欢
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 动态更新多个选择框 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01