Redraw方法不是刷新的极性图表



我有一个类似的问题,例如在HighChart图表上发布的Redraw方法上没有刷新图表,但我正在使用Polar Chart,因此提供的解决方案无法解决我的问题。

因此,下面的代码正确显示了HighChart,但没有刷新数据。现在我要提供建议/帮助如何解决。

$(function() {
$.getJSON('wind_graph.php?callback=?', function(dataWind) {
 var direction = Wind_direction;
  var polarOptions = {
    chart: {
      polar: true,
      events : {
          load : function () {
              setInterval(function(){
                RefreshDataWind();
                }, 1000);
          }
      }
    },
    title: {
      text: 'Wind Direction'
    },
    pane: {
      startAngle: 0,
    },
    tooltip: {
      enabled: false
    },
    legend: {
      enabled: false
    },
    // the value axis
    xAxis: {
      tickInterval: 15,
      min: 0,
      max: 360,
      labels: {
        formatter: function() {
          return this.value + '°';
        }
      }
    },
    plotOptions: {
      series: {
        pointStart: 0,
        pointInterval: 30,
        marker: {
          enabled: false
        },
      },
    }
  };
  // The polar chart
  $('#graph-1').highcharts(Highcharts.merge(polarOptions, {
    yAxis: {
      tickInterval: 5,
      min: 0,
      max: 25,
      visible: false
    },
    credits: {
      enabled: false
    },
    series: [{
        type: 'line',
        name: 'Direction',
        data: [
          [0, 0],
          [direction, 20]
        ],
        lineColor: '#7cb5ec',
        enableMouseTracking: false,
        visible: true,
        lineWidth: 2,
        zIndex: 8,
      }
    ]
  }));
  function RefreshDataWind()
  {
    var chart = $('#graph-1').highcharts();
    $.getJSON('wind_graph.php?callback=?', function(dataWind)
    {
        var direction = Wind_direction;
        chart.redraw();
    }); 
    chart.redraw();
  }
});
});

更加精确:如果给定的wind_direction值等于0(零),则我需要在图表上显示以下"条型":

{
        type: 'spline',
        name: 'CentralCicrleCalmWind1',
        data: [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
        pointInterval: 30,
        pointStart: 0,
        lineColor: windLineColor,
        enableMouseTracking: false,
        lineWidth: windLineWidth,
        visible: showCentralCicrleCalmWind,
      }, {
        type: 'spline',
        name: 'CentralCicrleCalmWind2',
        data: [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5],
        pointInterval: 30,
        pointStart: 0,
        lineColor: windLineColor,
        enableMouseTracking: false,
        lineWidth: windLineWidth,
        visible: showCentralCicrleCalmWind,
      }

您可以看到,我还有其他参数,例如设置为true或false的" showcentralcirclecalmwind"取决于给定的" wind_direction"值和逻辑,我已经在代码的顶部准备了(不在此处粘贴)。我需要的是:

  1. 在给定的JSON中读取变量的值
  2. 在JavaScript代码开始时设置变量"方向"
  3. 使用higcharts库显示图表
  4. 阅读JSON的新值
  5. 将变量"方向"更改为新值。
  6. 显示给定值的新图表
  7. 回到点4 ...

可以通过使用setData()函数来帮助您的问题(请参阅http://api.highcharts.com/highcharts/series.series.setdata)。

在您的示例中,我建议以下内容:

function RefreshDataWind()
{
    var chart = $('#graph-1').highcharts();
    $.getJSON('wind_graph.php?callback=?', function(dataWind)
    {
        var direction = Wind_direction;
        chart.series[0].setData(direction);
        /* assuming "direction" to be an array like [1, 2, 3] */
    }); 
}

以下HighCharts演示向您展示了它的工作原理:http://jsfiddle.net/gh/get/get/get/library/pure/highcharts/highcharts/highcharts/tree/master/master/master/samples/highcharts/highcharts/members/members/members/series-series-series-series-setdata/ppa>

根据" wind_direction"变量的格式,您可能需要在 setData()之前有一个声明,以明确使其成为数组,因为这是函数所期望的。

我还建议您删除chart.redraw()的第二个实例,因为setData()使得不必要。

我希望这对您有帮助!

最新更新