如何配置PHPlot仅绘制指定间隔的温度测量记录?
嘿,我来帮你搞定这个问题!你想让PHPlot只绘制每第10条温度记录,其实不需要PHPlot本身的特殊设置——核心是在给PHPlot传数据之前,先把要显示的记录筛选出来,有两种高效的方式:
1. 直接在数据库查询时筛选(推荐)
这种方法最省资源,因为不用把所有数据都拉到PHP里再处理。你可以用MySQL的窗口函数给每条记录编号,然后只保留编号是10的倍数的记录。修改你的查询语句:
$query = mysql_query(" SELECT data, temperatura FROM ( SELECT data, temperatura, ROW_NUMBER() OVER (ORDER BY data DESC) AS row_num FROM arduino ) AS temp_table WHERE row_num % 10 = 0 -- 取第10、20、30...条记录,想从第1条开始就改成%10=1 ORDER BY data DESC ");
解释一下:内层查询给每条按时间倒序的记录分配一个序号row_num,外层查询只保留序号能被10整除的记录,这样就直接拿到了每10条里的一条。
2. 在PHP数组中过滤数据
如果你的MySQL版本不支持窗口函数(比如低于8.0),可以在PHP循环取数据的时候,用计数器筛选:
$data = array(); $counter = 0; while ($row = mysql_fetch_assoc($query)) { // 每10条记录保留一条,这里的条件可以根据需求调整 if ($counter % 10 == 0) { $data[] = $row; } $counter++; }
这种方式就是遍历所有从数据库拿到的记录,只把符合间隔条件的存入$data数组,再传给PHPlot。
关于PHPlot本身的设置
遗憾的是,PHPlot并没有内置“跳过N条记录绘制”的选项——它会严格按照你传入的$data数组内容绘制,所以关键还是提前处理好数据源。
另外提个小建议:你现在用的mysql_*扩展已经被PHP官方废弃了,建议换成mysqli或者PDO,这样更安全也更兼容新版本PHP哦!
内容的提问来源于stack exchange,提问作者andrzej andrzejewski
相关产品推荐
相关产品推荐

