Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态设置除0之外的minPointLength_Javascript_Charts_Highcharts_Lazy High Charts - Fatal编程技术网

Javascript 如何动态设置除0之外的minPointLength

Javascript 如何动态设置除0之外的minPointLength,javascript,charts,highcharts,lazy-high-charts,Javascript,Charts,Highcharts,Lazy High Charts,我喜欢为high chart动态设置minPointLengh的值。但是下面提到的代码不起作用。你能帮我把它做完吗 $(function () { $('#container').highcharts({ chart: { type: 'column' }, xAxis: { categories: ['Sep', 'Oct', 'Nov', 'Dec'] },

我喜欢为high chart动态设置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]
        }]
    });
});

不能在对象内部使用代码。
尝试这样做:

var minPointLength;  

    if(this.y > 0)  
                  minPointLength = 3,  
             else  
                  minPointLength = 0,  
        };

    series: {
                minPointLength : minPointLength
        }

这是不可能的。属性
minPointLength
适用于整个系列,不能针对单个点进行更改

如果要正确显示值为正值和0的时间,则显示数据标签可能会有所帮助,以便清楚地标记这些列(请参见以下示例:)


此外,您要在Highcharts代码中动态执行的任何操作都需要在由事件或
格式化程序
函数调用的函数中执行。不能将变量或代码直接插入图表选项。原始代码不起作用的原因之一是您在
plotOptions

中的代码。我的建议是:将任何
0
值更改为
null

minPointLength
不会影响任何具有null
y
值的点

将代码更新为:

$(function () {
    $('#container').highcharts({
        chart: {
            type: 'column'
        },
        xAxis: {
            categories: ['Sep', 'Oct', 'Nov', 'Dec']
        },

        plotOptions: {
            series: {
              minPointLength: 3
          }
        },
        series: [{
            data: [4, null, 1, 5]
        }]
    });
});
例如:


代码无法工作的其他原因:您正试图直接在
plotOptions
对象内设置
minPointLength
属性-它需要位于一个序列选择器对象内(即“
series:{}
”、“
column:{}
”等)。

现有解决方案的问题:

  • 一个系列中的多个条的minPointLength不能不同。所以 这不起作用,因为我希望0 bar值保持不变。
  • 我无法将数据从0更改为null,因为我有一个在悬停时显示数据的工具提示,因此我无法将null显示为数据。
  • 解决方案:
    我们在序列数据中添加额外的条形高度,并从工具提示数据中删除(减去)。

  • 创建属性extraBarHeight并将其推送到highchart中的每个数据点 数据(即,您在
    工具提示:格式化程序(数据){}
    ).
  • 现在,将此extraBarHeight添加到要在
    buildGraph()中设置的数据中{
    系列:“”
    }

  • 在工具提示中,检查格式化程序(数据){的数据,您将找到每个条的extraBarHeight。从工具提示数据中减去该值(您可能将从根据系列数据自动更新的points属性中提取)
  • 现在计算超高是一件棘手的事情。

  • 迭代序列数据中的所有数据点,并找到最高值 一个,最大单位

  • extraBarHeight=maxUnit的10%(您可以更改百分比)

  • 比较系列中的每个数据点。我们这样做是为了避免小单位变得比大单位大,并保持零线不变

    if(数据点


  • 这是一个漫长而复杂的解决方案,但至少目前来说,这是唯一可行的方法。

    由@jlbiggs共享的解决方案运行良好,但它也会从工具提示中删除数据


    我采取了类似的方法,但没有将它们设置为空,我只是将
    0
    值转换为
    -1
    ,并将
    yAxis
    中的
    min
    设置为
    1
    。并且还显示了
    0
    绘图选项:{var minPointLength;if(this.y>0)minPointLength=3,else minPointLength=0,序列:{//if(this.y>0)minPointLength:minPointLength,//else//minPointLength:0,}},什么不起作用?什么是例外?请详细说明。你能看看问题中更新的代码吗。minPointLength是一个系列级选项,但你试图告诉它看一个点的y值。有很多原因导致它不能像你试图做的那样起作用。这是我找到的最好的实现方法这里需要的是将所有零值更改为空值。minPointLength不会影响空值,但会影响0值。对,我还需要显示工具提示,因此我采用了以下方法: