如何使用Gnuplot在Linux下基于含不确定度数据绘制双值对比图
实现方案
针对欧式小数点分隔的结构化双值数据、带测量不确定度的对比图需求,通过单份bash脚本内嵌Gnuplot配置,在Linux环境下直接生成匹配参考效果的图表,全程无需手动修改原始数据格式。
前置准备
- 确认系统已安装Gnuplot:Debian/Ubuntu 系列执行
sudo apt update && sudo apt install gnuplot;RHEL/CentOS/Fedora 系列执行sudo dnf install gnuplot - 将提供的结构化数据保存为脚本同目录下的
data.txt,保留原三行结构:第一行存储指标标题、第二行存储对应测量值、第三行存储对应测量不确定度
完整可运行Bash脚本
将以下内容保存为plot_comparison.sh,通过chmod +x plot_comparison.sh赋予执行权限后,运行./plot_comparison.sh即可生成目标图表。
#!/bin/bash # 校验数据文件存在性 if [ ! -f "data.txt" ]; then echo "错误:当前目录未找到data.txt数据文件" exit 1 fi # 数据预处理:将欧式逗号小数点转换为标准点号小数点,生成临时清洗文件 sed 's/,/./g' data.txt > data_clean.tmp # 调用Gnuplot生成图表 gnuplot << EOF # 输出配置 set terminal pngcairo enhanced font "DejaVu Sans,12" size 600,400 dpi 300 set output "comparison_plot.png" # 坐标轴与风格配置 set xrange [-0.5:1.5] set xtics ("value1" 0, "value2" 1) set yrange [6.70:6.73] set ytics 6.705, 0.01, 6.725 set border 3 # 仅保留左、下侧坐标轴边框,隐藏冗余的上、右侧边框 set grid y ls 0 lc "gray" lw 0.5 # 浅灰色水平参考网格 set key off # 关闭图例,直接通过X轴刻度标注指标名称 set bars 0.12 # 设置误差棒两端短横的长度 set pointsize 1.8 # 逐行读取清洗后的数据 f_in = "data_clean.tmp" if (!file_exists(f_in)) { print "错误:临时数据文件缺失" exit -1 } read f_in dummy # 跳过第一行的指标标题 read f_in measure_line # 读取第二行测量值 read f_in uncertainty_line # 读取第三行不确定度 close f_in # 拆分单行列值 y1 = word(measure_line, 1) y2 = word(measure_line, 2) e1 = word(uncertainty_line, 1) e2 = word(uncertainty_line, 2) # 绘制带误差棒的对比散点 plot "-" using 1:2:3 with yerrorbars \ pt 7 ps 1.8 lw 2 lc "black" 0 y1 e1 1 y2 e2 e EOF # 清理临时文件 rm data_clean.tmp echo "图表已生成:comparison_plot.png"
效果匹配说明
- 自动兼容原始数据中的欧式逗号小数点格式,不需要手动调整数据内容
- 图表元素完全对齐参考效果:两个测量值沿X轴水平均匀排布,搭配实心圆点标记与垂直误差棒,隐藏冗余的图框元素、浅灰色水平网格辅助读数
- 输出为300DPI的PNG格式图片,适配报告、论文的排版需求
内容的提问来源于stack exchange,提问作者skobyakov
相关产品推荐
相关产品推荐

