我喜欢为高图表动态设置minPointLengh的值。但是下面提到的代码不起作用。能帮我完成它吗?
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
xAxis: {
categories: ['Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
var minPointLength;
if(this.y > 0)
minPointLength = 3,
else
minPointLength = 0,
series: {
minPointLength: minPointLength,
}
},
series: [{
data: [4, 0, 1, 5]
}]
});
});
答案 0 :(得分:2)
我的建议:将所有0
值更改为null
值。
minPointLength
不会影响任何值为y
的点。
将代码更新为:
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
xAxis: {
categories: ['Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
series: {
minPointLength: 3
}
},
series: [{
data: [4, null, 1, 5]
}]
});
});
示例:
您的代码无法正常工作的其他原因:您试图直接在minPointLength
对象中设置plotOptions
属性 - 它需要位于其中一个系列选择器对象中(即' series: {}
',' column: {}
'等。)
答案 1 :(得分:0)
现有解决方案的问题:
解决方案:
我们在系列数据中添加额外的条形高度,然后从工具提示数据中删除(减去)。
tooltip: formatter(data){}
中收到的数据
)。buildGraph(){
series:""
}
formatter(data){
的数据,您会发现每个条形的extraBarHeight。从工具提示数据中减去该金额(您可能会从根据系列数据自动更新的points属性中获取)现在计算extraBarHeight非常棘手。
遍历系列数据中的所有数据点并找到最高的
一,maxUnit
extraBarHeight = maxUnit的10%(您可以更改百分比)
比较串联的每个数据点。我们这样做是为了避免小单位变得比大单位大,并保持零柱不变。
if(dataPoint< extraBarHeight && dataPoint !== 0)
dataPoint = dataPoint + extraBarHeight;
这是一个漫长而复杂的解决方案,但这至少是目前唯一可行的方法。
答案 2 :(得分:0)
@jlbriggs 分享的解决方案工作正常,但它也会从工具提示中删除数据。
我采用了类似的方法,但我没有将它们设为 null,而是将 0
值转换为 -1
并将 min
中的 yAxis
设置为 1
。并且还在工具提示中显示了值 0
的 <0
。
答案 3 :(得分:-1)
这是不可能的。属性minPointLength
适用于整个系列,无法针对各个点进行更改。
如果您想要正确显示值是正数还是0时,显示数据标签可能会有所帮助,以便明确标记这些列(请参阅此示例:https://jsfiddle.net/brightmatrix/1spxcsmd/)。
此外,您希望在Highcharts代码中动态执行的任何操作都需要位于事件或formatter
函数调用的函数中。您不能将变量或代码直接插入图表选项中。原始代码无法正常工作的原因之一是plotOptions
中的代码。
答案 4 :(得分:-2)
您无法在对象内使用代码 尝试这样做:
var minPointLength;
if(this.y > 0)
minPointLength = 3,
else
minPointLength = 0,
};
series: {
minPointLength : minPointLength
}