gpt4 book ai didi

javascript - Highcharts - 如何使用多个 xml 文件在一页上显示多个图表

转载 作者:行者123 更新时间:2023-11-28 08:22:36 27 4
gpt4 key购买 nike

有没有办法在同一页面上列出 2 个图表,其中每个图表都有其数据 xml 文件?我正在做的是从rrdtool 生成xml 文件,我想在一页上查看同一设备的所有图表。

这是我适用于一张图表的代码:

test.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/data.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script src="js/test.js" type="text/javascript"></script>
<script type="text/javascript">
$.ajax({
type: "GET",
url: "xml/test.xml",
dataType: "xml",
success: function(xml) {
var series = []

//define series
$(xml).find("entry").each(function() {
var seriesOptions = {
name: $(this).text(),
data: []
};
options.series.push(seriesOptions);
});

//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) {
options.series[index].data.push([t, v])
};
});
});

options.title.text = "CPU - Last 3 hours"
$.each(series, function(index) {
options.series.push(series[index]);
});
chart = new Highcharts.Chart(options);
}
})
</script>
</head>
<body>
<div id="cpu" style="width: 800px; height: 400px; margin: 0 auto; padding: 20px"></div>
</body>
</html>

test.js

Highcharts.setOptions({
global: {
useUTC: false
}
});

options = {
chart: {
renderTo: 'cpu',
type: 'area',
},
title: {
text: 'CPU'
},
subtitle: {
text: ''
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: {
hour: '%H. %M',
}
},
yAxis: {
title: {
text: 'Utilization %'
}
},
tooltip: {
formatter: function() {
return '<b>' + this.series.name + '</b><br/>' + Highcharts.dateFormat('%H:%M', this.x) + ': ' + Highcharts.numberFormat(this.y, 2) + ' %';
}
},

plotOptions: {
area: {
fillColor: {
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},
stops: [
[0, Highcharts.getOptions().colors[1]],
[1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
]
},
lineWidth: 1,
marker: {
enabled: false
},
shadow: true,
states: {
hover: {
lineWidth: 1
}
},
threshold: null
}
},


series: []
}

和 XML 文件 - test.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<xport>
<meta>
<start>1396030800</start>
<step>300</step>
<end>1396030800</end>
<rows>4</rows>
<columns>1</columns>
<legend>
<entry>cpu</entry>
</legend>
</meta>
<data>
<row><t>1396030800</t><v>2.8000000000e+01</v></row>
<row><t>1396031100</t><v>2.9780000000e+01</v></row>
<row><t>1396031400</t><v>3.1596666667e+01</v></row>
<row><t>1396041600</t><v>NaN</v></row>
</data>
</xport>

最佳答案

我也遇到了同样的问题,刚刚解决了!

在ready()函数之前:

  var chart;
var chart1;

$( document ).ready(function() {
your code....

我创建了两个选项,每个选项渲染到不同的容器

options = {
chart: {
renderTo: 'container',
type: 'area',
},
options2 = {
chart: {
renderTo: 'container2',
type: 'area',
},

并使用下面的代码添加到不同的容器:

chart = new Highcharts.Chart(options);
chart1 = new Highcharts.Chart(options2);

然后在你的html中:

<div id="container">
<div id="container2">

希望这个简短的解释能有所帮助。如果您有任何不清楚的地方,请随时问我。

干杯,

关于javascript - Highcharts - 如何使用多个 xml 文件在一页上显示多个图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22795375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com