我有一个类似的问题,例如在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"值和逻辑,我已经在代码的顶部准备了(不在此处粘贴)。我需要的是:
- 在给定的JSON中读取变量的值
- 在JavaScript代码开始时设置变量"方向"
- 使用higcharts库显示图表
- 阅读JSON的新值
- 将变量"方向"更改为新值。
- 显示给定值的新图表
- 回到点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()
使得不必要。
我希望这对您有帮助!