Javascript 如何访问';这';highcharts的绘图选项中的字段

Javascript 如何访问';这';highcharts的绘图选项中的字段,javascript,highcharts,Javascript,Highcharts,我正在努力实现两件事: 根据highcharts中柱形图的数据点应用绿色或红色。假设列大于50,则边框为绿色,否则为红色 我想在一些图表中放置一个图标(如果图标不可能,至少一个文本),基于它们是否具有某些属性 我正努力做到以下几点: plotOptions:{ column:{ borderColor: this.y > 50 ? 'green' : console.log(this), dataLabels: {

我正在努力实现两件事:

  • 根据highcharts中柱形图的数据点应用绿色或红色。假设列大于50,则边框为绿色,否则为红色

  • 我想在一些图表中放置一个图标(如果图标不可能,至少一个文本),基于它们是否具有某些属性

  • 我正努力做到以下几点:

    plotOptions:{
            column:{
                borderColor: this.y > 50 ? 'green' : console.log(this),
                dataLabels: {
                                format: this.prop : 'i': '', //will put 'i' as icon
                                enabled: true,
                                align: 'top',
                                color: '#fff',
                                inside: true
                            }
            },
    
        },
    
    我的条形图系列是:

     series: [{
                name: 'Defect per sprint',
                data: [0, 0, 0, 2, 10, 2, 5, 3]
                }]
    
    如果我将borderColor与series一起保留,它将应用于所有列 但“this”实例似乎没有提供plotOptions。所以上面的代码不起作用。如何实现上述目标???我不知道如何在图表创建中实现这一点。但是,您可以在创建图表后在序列数组上循环以更新每列的边框颜色。在循环中,检查列值是否大于50后,使用
    update
    方法。样本如下:

    chart.series[i].update({borderColor: '#00FF00'})
    
    2) 我已经有一段时间没有使用Highcharts了,但下面的方法曾经奏效:定义一个
    格式化程序
    函数,而不是
    格式化程序

    dataLabels: {
      formatter: function () {return this.prop ? 'i' : ''}, //will put 'i' as icon
      ...
    }
    

    我会通过预处理数据来做到这一点

    您可以在数据数组中循环并检查任何值,并相应地应用任何级别的格式设置

    示例:

    var data = [1, 2, 3, 5, 9, 8, 7, 4, 5, 6, 9, 7, 5, 3, 6, 9, 7, 5, 9],
      processedData = [];
    
    $.each(data, function(i, point) {
      processedData.push(
        (
          point < 6 ? {
            "y": point,
            "color": "rgba(204,0,0,0.75)",
            "dataLabels": {
              "enabled": true
            }
          } : point
        )
      )
    });
    
    var数据=[1,2,3,5,9,8,7,4,5,6,9,7,5,3,6,9,7,5,5,9],
    processedData=[];
    $。每个(数据、函数(i、点){
    processedData.push(
    (
    点<6{
    “y”:点,
    “颜色”:“rgba(204,0,0,0.75)”,
    “数据标签”:{
    “已启用”:真
    }
    }:点
    )
    )
    });
    
    这将在数组中循环,检查小于6的值-如果找到,将对点应用不同的颜色,并启用数据标签,否则,只将点作为单个值添加,图表配置将确定其颜色和其他属性

    在图表配置中,指定
    dataLabels
    属性的详细信息,并设置
    enabled:false
    ,以便它们仅用于已启用它们的点

    小提琴:

    输出:


    将尝试并更新…顺便说一句,我建议通过预处理数据来解决我的问题。在数据数组中循环,如果一个点符合条件,则在数据的point对象中设置颜色并启用datalabel。这很有效。但是我可以将这些标签放在列的左上角吗?看起来像
    align:top
    什么都不做。使用类似于
    y:10
    的东西是可行的,但是需要为每个条计算
    y
    值。是否有出路
    align
    是水平的。您需要垂直对齐: