我的数据文件是;

#"U"
17.90 17.92 0.03
17.91 17.93 0.03

#"M"
11.22 16.71 0.02
11.44 16.64 0.02

#"T"
33.22 16.36 0.01
22.3 16.34 0.01

我想画1:2,第三是y轴上的误差。我希望这些是有错误的linespoint,所以我使用代码:
plot 'doc.dat' u 1:2:3 w yerrorbars ls 1 i 0 t "U", '' u 1:2:3 w yerrorbars ls 2 i 1 t "M", '' u 1:2:3 w yerrorbars ls 3 i 2 t "T"

但是有错误。我不明白我做错了哪一部分。

最佳答案

如gnuplothelp index中所述:数据集由成对的空白记录分隔。
因此,要使用索引,需要将数据文件更改为:(注意双空格)

#"U"
17.90 17.92 0.03
17.91 17.93 0.03


#"M"
11.22 16.71 0.02
11.44 16.64 0.02


#"T"
33.22 16.36 0.01
22.3 16.34 0.01

那么关于你的情节线,正如@matthew所建议的,你需要改为:
plot 'doc.dat' i 0 u 1:2:3 w yerrorbars ls 1 t "U", '' i 1 u 1:2:3 w yerrorbars ls 2 t "M", '' i 2 u 1:2:3 w yerrorbars ls 3 t "T"

注:
删除注释对脚本有很大帮助:
"U"
17.90 17.92 0.03
17.91 17.93 0.03


"M"
11.22 16.71 0.02
11.44 16.64 0.02


"T"
33.22 16.36 0.01
22.3 16.34 0.01

可以将脚本简化为:
set key autotitle columnhead
plot for [a=0:2] "doc.dat" i a w yerr

或者更好的方法是自动计算块的数量:
set key autotitle columnhead
stats "doc.dat"
plot for [a=0:STATS_blocks] "doc.dat" i a w yerr

最后,如果需要误差线和点之间的直线,plot线变为:
plot for [a=0:STATS_blocks] "doc.dat" i a w l, for [a=0:STATS_blocks] "" i a w yerr pt 0

查看gnuplot中的help statshelp for

09-25 19:38