Highcharts.chart('container', {
chart: {
type: 'area'
},
plotOptions: {
series: {
connectNulls: false,
// stacking: 'normal'
}
},
series: [{
fillOpacity: 0.75,
data: [
{ x: 0, y: 29.9 },
{ x: 1, y: 71.5 },
{ x: 3, y: null },
{ x: 4.3, y: 129.2, color: 'red' },
{ x: null, y: null },
{ x: null, y: null },
{ x: 8, y: 216.0, color: 'yellow' },
{ x: 9, y: 135.6, color: 'purple' },
{ x: 7.2, y: 148.5, color: 'lime' },
{ x: 12, y: 216.4 },
{ x: 14, y: 194.1 }
]
}]
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>
我在绘制具有非单调数据的Highcharts面积图时遇到了麻烦。
在给定的例子中,我希望看到:
- 红色区域也填充有蓝色
- 黑色条纹区域可能暗示多个蓝色区域的重叠(使用不透明度或类似的方法)
看起来Highcharts使用了奇偶填充规则或类似的规则,但我无法确定或在手册中找到有关它的内容。
1条答案
按热度按时间esyap4oy1#
您遇到了Highcharts的一个常见限制:它不能保证正确显示未按X轴值排序的数据 *。
据我所知,实现您所寻求的视觉效果的最简单方法是定义多个系列,所有系列都按X轴值排序,但覆盖适当的组合区域。
将原始数据处理成多个系列是Highcharts调用者的责任,但粗略地说,我建议使用以下结构:
1.将您的原始数据分割成单调递增/递减的段,并具有重叠的边界值。
在您的示例中,序列[0,1,3,4.3,8,9,7.2,12,14]变为[0,1,3,4.3,8,9],[9,7.2],[7.2,12,14]。
1.对于递减的段,颠倒它们的顺序以遵守Highcharts的排序要求。
1.(可选)设置某些边界点的可见性,以便您不会在最终图表中呈现重复的工具提示(或图例项)。
潜在结果图表的演示如下(省略上述步骤3):