我不是开发人员,所以我需要你的帮助。 我想创建一个包含多个轴的Highcharts的图表,如下所示:http://www.highcharts.com/demo/combo-multi-axes Highcharts示例使用3种类型的值:温度,压力和降雨量,但我需要它来绘制相同图表中的温度和湿度,因此只有两种类型的值。 由于RRDtool(循环数据库),数据(温度和湿度)存储在XML中。 现在我使用Highcharts绘制基本线,因此每个图表只绘制一种类型的值(一个温度图表,另一个湿度图表)。
这是我的基本折线图代码:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="/weather-station/js/highcharts.js"></script>
<script type="text/javascript">
$(function () {
$(document).ready(function() {
$.ajax({
type: "GET",
url: "/data/temperature24h.xml",
dataType: "xml",
success: function(xml) {
Highcharts.setOptions({global:{useUTC:false}});
options={chart:{renderTo:"container-fluid",type:"spline",zoomType:"xy"},title:{text:""},xAxis:{type:"datetime",dateTimeLabelFormats:{hour:"%H. %M"}},yAxis:{title:{text:"Temperature (°C)"}},tooltip:{formatter:function(){return"<b>"+this.series.name+"</b><br/>"+Highcharts.dateFormat("%H:%M",this.x)+": "+this.y.toFixed(1)+" °C"}},plotOptions:{series:{marker:{radius:2}}},lineWidth:1,series:[]}
var series = []
//alert('start');
//define series
$(xml).find("entry").each(function() {
var seriesOptions = {
name: $(this).text(),
data: []
};
options.series.push(seriesOptions);
});
//alert('finish part 1');
//populate with data
$(xml).find("row").each(function() {
var t = parseInt($(this).find("t").text()) * 1000
$(this).find("v").each(function(index) {
var v = parseFloat($(this).text())
v = v || null
if (v != null) {
//alert('index = ' + index + 'time=' + t + 'v=' + v);
options.series[index].data.push([t, v])
};
});
});
//alert('finish part 2');
options.title.text = "Temperatures of the last 24h"
$.each(series, function(index) {
options.series.push(series[index]);
});
//alert('finish part 3');
chart = new Highcharts.Chart(options);
}
});
});
});
</script>
<script type="text/javascript" src="/weather-station/js/exporting.js"></script>
这是XML(时间和数据)的某些行的示例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xport>
<meta>
<start>1381828200</start>
<step>300</step>
<end>1381828200</end>
<rows>289</rows>
<columns>3</columns>
<legend>
<entry>External Temperature</entry>
<entry>Internal Temperature</entry>
<entry>Bedroom Temperature</entry>
</legend>
</meta>
<data>
<row><t>1381828200</t><v>2.2399482146e+01</v><v>2.3000000000e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381828500</t><v>2.2598366803e+01</v><v>2.3000000000e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381828800</t><v>2.2898350863e+01</v><v>2.3099450288e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381829100</t><v>2.3197774941e+01</v><v>2.3100000000e+01</v><v>2.2600000000e+01</v></row>
<row><t>1381914600</t><v>NaN</v><v>NaN</v><v>NaN</v></row>
</data>
</xport>
请有人修改我的基本行Highcharts代码,通过从XML文件中获取数据来创建多个轴代码吗?
非常感谢!
答案 0 :(得分:0)
您需要熟悉为多个yAx解析XML和系列结构,例如:http://www.highcharts.com/demo/combo-multi-axes然后在预处理期间准备数据。