【问题标题】:How to plot a line graph using Json array using webrequest如何使用 webrequest 使用 Json 数组绘制折线图
【发布时间】:2016-04-12 18:29:08
【问题描述】:

首先,我对 C# 和 Json 很陌生。

我想在 C# GUI 中根据 mysql 表数据绘制图表。我制作了一个 PHP 文件以从 mysql 数据库表中选择数据,并使用echo json_encode(array("result"=>$result))在 json 数组中回显所选内容@

这是我的 PHP:

<?php
define('HOST','*********************');
define('USER','*********************');
define('PASS','*********************');
define('DB','***********************');

if($_SERVER['REQUEST_METHOD']=='GET'){

 $start = $_GET['start'];
 $ending  = $_GET['ending'];
}

$con = mysqli_connect(HOST,USER,PASS,DB);


$sql = "SELECT * FROM table WHERE date_time BETWEEN '$start' and '$ending'" ;
$res = mysqli_query($con,$sql);

$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,array('id'=>$row[0],'p_pairs'=>$row[1],'temp1'=>$row[2]  ,'temp2'=>$row[3],'temp3'=>$row[4],'temp4'=>$row[5],'temp5'=>$row[6],'avg_current'=>$row[7],'avg_voltage'=>$row[8],'kw'=>$row[9],'kwh'=>$row[10]));
}

echo json_encode(array($result));

mysqli_close($con);

?>

使用该链接,我可以清楚地看到日期时间间隔之间的 json 数组。我想要的只是绘制温度值(temp1、temp2、..)、p 对值和其他带有 date_time 的图表线图读取历史数据。

当我访问 PHP 页面时,我得到的只是:

[[{"id":"1","p_pairs":"0000-00-00 00:00:00","temp1":"2","temp2":"100","temp3":"100","temp4":"100","temp5":"100","avg_current":"100","avg_voltage":"300","kw":"300","kwh":"300"},{"id":"2","p_pairs":"0000-00-00 00:00:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"3","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"4","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"}]]

注意:此处将某些日期时间设置为默认值。我只是想展示这个数组。正确的将非常适合绘制图表。

我可以使用来自 C# 的 Web 请求将这些数组放入字符串中。使用下面的代码:

        System.Net.WebClient wc = new System.Net.WebClient();
        byte[] raw = wc.DownloadData("url to php");

        string webData = System.Text.Encoding.UTF8.GetString(raw);

如果有人可以帮我在折线图中将其绘制为 date_time Vs temp1、temp2 或 p_pairs 以及像 C# GUI 中的那样...

这对我来说将是一个很大的帮助。 提前谢谢你。

【问题讨论】:

  • 首先,您应该使用 Newtonsoft 的 JSON.net 将 webData 转换为可用的 JSON 对象。查找一些关于此的教程。你想生成什么?您是否尝试生成带有图形的 jpg 或 png?还是要在网站上显示?
  • 感谢您的回复。我想在我的 Winform UI 中绘制它们。这是在反序列化并采购到表格后完成的。我当前的问题是,我有六个与上面提到的相同的表。我想绘制类似 date_time vs temp1 (table1), tamp1 (table2), tamp1 (table3), tamp1 (table4), tamp1 (table5), tamp1 (table6) 的图表作为折线图。所有表都在同一个数据库中,结构相同。
  • 听起来你只需要一个图形库。看看code.msdn.microsoft.com/mschart。 Infragistics、DevExpress 和其他小部件制造商有其他工具来创建图表。

标签: c# php mysql json


【解决方案1】:

首先找一门课。您可以从 Json 动态创建一个类

如果您愿意依赖 System.Web.Helpers 程序集,那么您可以使用 Json 类:

dynamic data = Json.Decode(json);

它包含在 MVC 框架中,作为 .NET 4 框架的附加下载。或者使用 NewtonSoft。

接下来获取一个图表组件:https://msdn.microsoft.com/en-us/library/dd489237.aspx 并将您的数据绑定到图表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2016-07-18
    • 2010-10-14
    相关资源
    最近更新 更多