我有一个Highcharts图表,当有两个Y轴时会在addSeries方法中抛出错误。
这是一个Backbone项目,所以我简化了这个JSFiddle中的代码:http://jsfiddle.net/michalcarson/V84pP/。
代码创建一个没有数据的图表。它增加了第二个Y轴。然后它添加第一个系列的数据。此时发生错误:" TypeError:tickPositions未定义"在highcharts.src.js第7315行。
我添加的数据应该与主y轴(chart.yAxis [0])相关联,但是无论我是否指定了该关联,都会发生错误。有关更多详细信息,请参阅JSFiddle。
var chart,
options = {
chart: {
renderTo: 'chartdiv'
}
},
real_series = {
"data": [10.816667, 8.458333, 9.1, 8.794771, 7.91789, 7.281212,
6.671075, 6.08748, 5.530427, 4.999916, 4.495946, 4.018517, 3.567631]
};
chart = new Highcharts.Chart(options);
chart.addAxis({
id: "LCUReal",
title: { text: "LCU Real" },
opposite: true
}, false);
chart.addSeries(real_series);
我使用的是jQuery 1.11.1和Highcharts 4.0.3。
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://code.highcharts.com/4.0.3/highcharts.src.js"></script>
<div id="chartdiv"></div>
所以问题是:这段代码有什么问题?如何在没有此错误的情况下使第二个Y轴工作?
我没有对tickPositions做任何事情。我以前从未见过。我很高兴让Highcharts能够解决这个问题。
答案 0 :(得分:0)
因为您的轴没有范围,所以您可以通过将轴与第一个轴链接来消除它。
示例:
chart.addAxis({
linkedTo: 0,
id: "LCUReal",
title: {
text: "LCU Real"
},
opposite: true
}, false);
答案 1 :(得分:0)
如果我推迟创建辅助y轴直到需要它,我发现我可以做这项工作。也就是说,
更正后的代码:
var chart,
options = {
chart: {
renderTo: 'chartdiv'
}
},
series1 = {
"name": "Interest Rate %",
"data": [10.816667, 8.458333, 9.1, 8.794771, 7.91789, 7.281212,
6.671075, 6.08748, 5.530427, 4.999916, 4.495946, 4.018517, 3.567631],
"yAxis": "%"
},
series2 = {
"name": "Exports",
"data": [5803.475611, 5820.886038, 5925.661986, 6022.908979, 6091.005915, 6133.429061,
6158.918132, 6174.863244, 6186.050828, 6195.144854, 6203.458226, 6211.561078, 6219.661642],
"yAxis": "LCUReal"
};
chart = new Highcharts.Chart(options);
chart.yAxis[0].update({
id: "%",
title: { text: "%" }
});
// SOLUTION: adding series1 here prevents the error
chart.addSeries(series1);
chart.addAxis({
id: "LCUReal",
title: {
text: "LCU Real"
},
opposite: true
}, false);
// PROBLEM: adding secondary y-axis before adding data series to the primary y-axis throws
// TypeError: tickPositions is undefined.
// PROBLEM: even if the data is added above before the secondary y-axis is created, adding
// a series to the primary y-axis when there is no data on the secondary y-axis
// will throw the same TypeError: tickPositions is undefined.
//chart.addSeries(series1);
chart.addSeries(series2);