google-visualization - 从一张数据表中画出两张谷歌折线图
问题描述
我从我的 arduino 传感器收集数据到一个 mysql 表中,然后使用谷歌图表来绘制带有数据的折线图。我的数据是温度、湿度和计算得出的湿度指数。我项目的一部分是用我能够做到的当前值绘制一个量规。因此,我将数据选择到数据表中,然后使用数据视图对其进行过滤。然后为每个过滤值绘制三个单独的量规。问题是温度通常从 -40 到 40 比方说,湿度从 0% 到 100%,因此将它们绘制在同一个图表中会使图表就温度而言看起来很平坦。
我的目标是绘制两张图,而不必两次查询数据库(当然如果可能的话)
下面是相关代码
echo "[new Date(" . $row["Year"] .", " .$row["Month"].", " .$row["Day"].", " .$row["Hour"].", " .$row["Min"]."), ". $temperature . ", " . $humidex . ", " . $humidity . "]";
var temp_view = new google.visualization.DataView(data);
temp_view.setRows([0,1,2]);
var humid_view = new google.visualization.DataView(data);
humid_view.setRows([0,3]);
var options = {'title':'Temperature', 'width':650, 'height':500};
var chart1 = new google.visualization.LineChart(document.getElementById('temp_chart'));
chart1.draw(temp_view, options);
var chart2 = new google.visualization.LineChart(document.getElementById('humid_chart'));
chart2.draw(humid_view, options);
解决方案
如果数据产生类似于以下的数组...
[new Date(2018, 5, 29, 7, 26), 70, 75, 0.98]
那么你只有一行 4 列
这意味着您应该使用setColumns
, 而不是setRows
...
尝试...
var temp_view = new google.visualization.DataView(data);
temp_view.setColumns([0,1,2]);
var humid_view = new google.visualization.DataView(data);
humid_view.setColumns([0,3]);
var options = {'title':'Temperature', 'width':650, 'height':500};
var chart1 = new google.visualization.LineChart(document.getElementById('temp_chart'));
chart1.draw(temp_view, options);
var chart2 = new google.visualization.LineChart(document.getElementById('humid_chart'));
chart2.draw(humid_view, options);
推荐阅读
- javascript - VSCode 不接受 @babel/plugin-proposal-pipeline-operator
- python - Python while循环计数器忽略限制
- java - 从 Android 手机向数据库发送唯一 ID
- r - 使用列表中的字符串选择 R 中的列
- javascript - 变量不改变它的值 - 函数返回承诺 - JavaScript
- python-3.x - 使用python库在swagger url中读取REST API数据
- reactjs - 通过 cors-anywhere.herokuapp 调用 Hubspot API 的 429(请求过多)错误
- c++ - C++ LNK2019 | 未解决的符号 | 视觉工作室 2013 | 虚拟功能 | 测试
- ios - Swift:使用 UIImageView 将表格视图单元格之间的数据传递到辅助视图控制器的问题
- sql - 在 Azure 数据块中,我想从日期时间列中获取每周的开始日期和周数