我正在使用动态函数制作高清图,它在调用函数后根本没有渲染.如果我调整窗口大小,它会渲染数据?有什么具体的原因吗?
我的功能:
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() });
})
Run Code Online (Sandbox Code Playgroud)
请检查我的jsfiddle.
问题是您将addSeries的set参数设置为false.
在这种情况下,您必须设置为true,并在添加新系列后重绘图表.
对于一个系列.
chart.addSeries({data:randomData(20),name:'Line'+i},true);
Run Code Online (Sandbox Code Playgroud)
像下面的例子.
的jsfiddle
或者如果你想在每次点击中添加多个系列,你只需改变一件事.
function createChart(seriesData){
s1 = chart.addSeries(seriesData,false);
}
$('#create').click(function(){
createChart(seriesData);
chart.redraw();
});
Run Code Online (Sandbox Code Playgroud)
您将添加所有系列,然后重绘图表,这样您就不必在每次添加新系列时重绘图表.
您需要添加chart.redraw();
function createChart(){
s1 = chart.addSeries({data:randomData(20),name:'Line'+i},false);
chart.redraw();
}
Run Code Online (Sandbox Code Playgroud)