我正在使用动态函数制作高清图,它在调用函数后根本没有渲染。如果我调整窗口大小,它会渲染数据?有什么具体的原因吗?
我的职能:
var chart;
$(document).ready(function(){
function randomData(len){
var arr = [];
for(var i = 0; i<len;i++){
arr.push(Math.random())
}
return arr;
}
var options = {
chart:{
renderTo:'graph',
type:'line'
},
title:{
text:null
},
xAxis: {
plotBands: [{
from: 5,
to: 6,
color: 'yellow',
label: {
text: 'Yellow'
}
}, {
from: 10,
to: 11,
color: 'green',
label: {
text: 'Green'
}
}]
},
plotOptions:{
series:{
animation:false,
dataLabels:{enabled:true,formatter:function(){return Highcharts.numberFormat(this.y)}}
}
}
}
chart = new Highcharts.Chart(options);
var i = 1, s1,s2,s3,s4;
function createChart(){
s1 = chart.addSeries({data:randomData(20),name:'Line'+i},false);
}
$('#create').click(function(){ createChart() });
})
请检查我的jsfiddle。
答案 0 :(得分:8)
问题是您将addSeries的设置参数设置为false
在这种情况下,您必须设置为true,并在添加新系列后重绘图表。
对于一个系列。
chart.addSeries({data:randomData(20),name:'Line'+i},true);
如以下示例所示 的 jsfiddle 强>
或者,如果您想在每次点击中添加多个系列,您只需更改一件事。
function createChart(seriesData){
s1 = chart.addSeries(seriesData,false);
}
$('#create').click(function(){
createChart(seriesData);
chart.redraw();
});
您将添加所有系列,然后重绘图表,这样您就不必在每次添加新系列时重新绘制图表。
答案 1 :(得分:4)
您需要添加chart.redraw();
function createChart(){
s1 = chart.addSeries({data:randomData(20),name:'Line'+i},false);
chart.redraw();
}