观察下面示例中具有常数值的系列1,并且对于该系列点,不绘制连接线,但是当我们给出纯色时,则将绘制该线。
Highchart的线图与常数系列在我们使用线渐变颜色时没有绘制线b / w点,但如果将其更改为纯色,则线将绘制。
highcharts.series[].data = [2, 2, 2, ...];
highcharts.color[0] = {
linearGradient: {...},
stop: {...}
};
答案 0 :(得分:3)
这是因为gradientUnits
中的属性linearGradient
,其默认值为objectBoundingBox
。
关键字objectBoundingBox不应该在几何体时使用 适用元素没有宽度或没有高度,例如a的情况 水平或垂直线,即使该线具有实际厚度 当由于行程宽度而具有非零行程宽度而被观察时 被忽略的边界框计算。当几何学 适用的元素没有宽度或高度,objectBoundingBox是 指定,然后给定的效果(例如,渐变或过滤器)将 被忽略了。
您需要使用gradientUnits="userSpaceOnUse"
。
Highcharts.js已在2.2版中修复此问题。
而不是使用linearGradient
作为对象
"linearGradient": {
"x1": 0,
"y1": 0,
"x2": 1,
"y2": 0
}
,将其用作数组
"linearGradient": [x1, y1, x2, y2],
会在highcharts.js
中将gradientUnits
设置为userSpaceOnUse
(这需要了解线宽。)
这是一个演示:
var Chart = Highcharts.chart('container', {
chart: {
type: 'line'
},
title: {
text: 'a constant series line is not plotting when using linear gradient colour.'
},
legend: {
layout: 'vertical',
align: 'left',
verticalAlign: 'top',
x: 150,
y: 100,
floating: true,
borderWidth: 1,
backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
},
colors: [{
"linearGradient": [0, 0, 500, 0],
"stops": [
[0, "rgb(35,190,250)"],
[1, "rgb(51,223,188)"]
]
}, {
"linearGradient": [0, 0, 500, 0],
"stops": [
[0, "rgb(250,79,168)"],
[1, "rgb(156,120,229)"]
]
}],
xAxis: {
categories: [
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday',
'Sunday'
],
plotBands: [{ // visualize the weekend
from: 4.5,
to: 6.5,
color: 'rgba(68, 170, 213, .2)'
}]
},
yAxis: {
title: {
text: 'Fruit units'
}
},
tooltip: {
shared: true,
valueSuffix: ' units'
},
credits: {
enabled: false
},
plotOptions: {
areaspline: {
fillOpacity: 0.5
}
},
series: [{
name: 'John',
data: [2, 2, 2, 2, 2, 2, 2]
},
{
name: 'Jane',
data: [1, 1, 1, 1, 1, 1, 2]
}
]
});
#container {
width: 100%;
height: 400px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.7/highcharts.src.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.7/css/highcharts.css" />
<div id="container"></div>