You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Gnuplot绘制智能燃气表小时耗气量柱状图?

实现小时天然气消耗量柱状图的方法

要从累计数据生成小时消耗量柱状图,需先计算每个小时的天然气使用量(该小时结束累计值减去开始累计值),再用Gnuplot绘制柱状图。以下是具体步骤和脚本:

完整实现脚本

# 预处理数据:计算每小时消耗量并按时间排序
awk -F';' '
NR == 1 { next }  # 跳过表头行
{
    # 生成日期+小时的分组标识
    hour_group = $1 ";" substr($2, 1, 2)
    # 记录该小时的首个和末次累计值
    if (!first_val[hour_group]) first_val[hour_group] = $3
    last_val[hour_group] = $3
}
END {
    print "date_time;hourly_consumption"
    for (group in first_val) {
        split(group, parts, ";")
        date = parts[1]
        hour = parts[2]
        # 计算小时消耗量
        usage = last_val[group] - first_val[group]
        # 输出格式化的时间与消耗量
        printf "%s;%s:00;%.3f\n", date, hour, usage
    }
}' /home/pi/p1_data.csv | sort > /tmp/hourly_gas_data.csv

# 用Gnuplot绘制柱状图
gnuplot << eor
set xtics rotate 45  # 旋转x轴标签避免重叠
set y2tics
set grid ytics mytics xtics
set mytics 2
set grid

set xdata time
set timefmt '%Y-%m-%d;%H:%M'
set datafile separator ';'
set terminal pngcairo size 1400,600 enhanced font 'Helvetica,12'
set output '/dev/shm/images/p1_hourly_gas.png'

# 配置柱状图样式
set style data boxes
set style fill solid 0.7  # 设置柱子填充透明度
set boxwidth 0.8 relative  # 调整柱子宽度适配时间轴

set title "每小时天然气消耗量"
set xlabel "时间"
set ylabel "小时耗气量 (m³)"

# 绘制预处理后的小时数据
plot '/tmp/hourly_gas_data.csv' using 1:3 title "小时消耗量" linecolor rgb "orange-red"
eor

# 清理临时文件
rm /tmp/hourly_gas_data.csv

关键说明

  • 数据预处理:通过awk遍历原始数据,按小时分组计算消耗量,排序后保证时间顺序,避免绘图时出现乱序。
  • Gnuplot配置:
    • set style data boxes指定绘制柱状图
    • boxwidth设置为相对宽度,适配时间轴的间隔
    • 旋转x轴标签解决整月数据标签拥挤问题
    • 时间格式与预处理输出匹配,确保x轴按时间顺序排列

内容的提问来源于stack exchange,提问作者WOU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:20:46