我有一个比特币矿工,可以从JSON中输出数据,如下所示:
{
"Data1": {
"timestamp_raw": 1442856476,
"timestamp": {
"Year": 2015,
"Month": 9,
"Day": 21,
"Hour": 20,
"Minutes": 27,
"Seconds": 56
},
"CG_Uptime": 15572,
"MHS_Avg": 2695618.06,
"DegC_In": "29",
"DegC_TopOut": "54",
"DegC_BotOut": "59",
"Unit_Uptime": 118393,
"FreeMem": "440",
"PSUVolt_Top": "217",
"PSUVolt_Bot": "217",
"FAN": "40",
"Total_Watts": 1264,
"Total_KWh": 0
},
"Data2": {
"timestamp_raw": 1442856495,
"timestamp": {
"Year": 2015,
"Month": 9,
"Day": 21,
"Hour": 20,
"Minutes": 28,
"Seconds": 15
},
"CG_Uptime": 15592,
"MHS_Avg": 2695948.02,
"DegC_In": "29",
"DegC_TopOut": "54",
"DegC_BotOut": "59",
"Unit_Uptime": 118412,
"FreeMem": "440",
"PSUVolt_Top": "217",
"PSUVolt_Bot": "217",
"FAN": "40",
"Total_Watts": 1248,
"Total_KWh": 30.006586944
},
"Data3": {
"timestamp_raw": 1442856535,
"timestamp": {
"Year": 2015,
"Month": 9,
"Day": 21,
"Hour": 20,
"Minutes": 28,
"Seconds": 55
},
"CG_Uptime": 15631,
"MHS_Avg": 2698686.25,
"DegC_In": "29",
"DegC_TopOut": "54",
"DegC_BotOut": "59",
"Unit_Uptime": 118451,
"FreeMem": "440",
"PSUVolt_Top": "217",
"PSUVolt_Bot": "217",
"FAN": "40",
"Total_Watts": 1232,
"Total_KWh": 0.013688752
}, ......我想做的是用php做一个网页,它将读取这个json文件并在图表上显示这些值,x轴是时间(来自json中的时间戳部分),y轴是每个图表的值。
我在这里看到过类似的http://powerprice.info/SPT/graphic.php,它使用highcharts。我如何才能做到这一点呢?
发布于 2015-04-27 17:24:35
我认为你只是在寻找一个一般性的建议。
实时数据:
这里是我的:如果服务器,它为你提供比特币的数据支持历史数据,如特定的请求与数据范围(从-到等)。然后,只需在HTML文件中对您的服务器使用AJAX调用。然后在PHP中调用一些GET/POST到提供者服务器以获取所请求的数据。然后在AJAX响应中向图表提供数据。只需确保你有正确的格式,这是Highcharts所要求的。
你不会在Highcharts网站上找到很多例子,因为对于Highcharts来说,你在后端拥有什么真的无关紧要。然而,this tutorial稍微解释了一下。在步骤#1: Set up the server中,不是随机数据,而是从数据提供商那里获得适当的数据。
数据预处理:
根据您的问题更新,其他建议:我不能告诉您需要如何存储上周的数据,但我猜简单的数据库就足够了。正如您所说的,使用一些cron任务从服务中获取数据,然后将其存储在数据库中。
问题是JSON的哪个属性的值将显示在图表上。在下面的示例中,我假设使用MHS_Avg作为y值。不过,我没有看到任何x值的东西(比如date或timestamp)。
假设您让/var/www/json.php为图表加载数据:
$(function () {
$.getJSON("/var/www/json.php", function (data) {
var value,
series = [{
name: "MHS_Avg",
data: []
}]; // create series array with all series
// now parse data:
$.each(data, function (i, obj) {
value = parseFloat(obj["MHS_Avg"]);
if (!isNaN(value)) {
series[0].data.push([i, value]);
// or:
// series[0].data.push(value);
// or:
// series[0].data.push({ x: i, y: value });
};
});
// create chart
$('#temps_hist').highcharts({
series: series
});
});
});https://stackoverflow.com/questions/29878522
复制相似问题