gnuplot:在y轴上绘制一个包含4列的文件

use*_*907 30 gnuplot curves

我有一个包含4个数字(最小值,最大值,平均值,标准推导值)的文件,我想用gnuplot绘制它.

样品:

24 31 29.0909 2.57451
12 31 27.2727 5.24129
14 31 26.1818 5.04197
22 31 27.7273 3.13603
22 31 28.1818 2.88627
Run Code Online (Sandbox Code Playgroud)

如果我有一个列有4个文件,那么我可以这样做:

gnuplot "file1.txt" with lines, "file2.txt" with lines, "file3.txt" with lines, "file4.txt" with lines
Run Code Online (Sandbox Code Playgroud)

它将绘制4条曲线.我不关心x轴,它应该只是一个恒定的增量.

我怎么能请情节?我似乎无法找到一种方法,有4条曲线,1个文件有4列,只有一个不断递增的x值.

谢谢.

Tho*_*hor 78

您可以绘制同一文件的不同列,如下所示:

plot 'file' using 0:1 with lines, '' using 0:2 with lines ...
Run Code Online (Sandbox Code Playgroud)

(...指继续).关于这种表示法的几点说明:using指定要绘制的列,即第一个using语句中的第0列和第1列,第0列是伪列,转换为数据文件中的当前行号.请注意,如果只使用一个参数using(例如using n)它对应于说using 0:n(感谢指出mgilson).

如果您的Gnuplot版本足够新,您可以使用for循环绘制所有4列:

set key outside
plot for [col=1:4] 'file' using 0:col with lines
Run Code Online (Sandbox Code Playgroud)

结果:

for-loop plot

如果标题位于数据文件中,则Gnuplot可以使用列标题,例如:

min max mean std
24 31 29.0909 2.57451
12 31 27.2727 5.24129
14 31 26.1818 5.04197
22 31 27.7273 3.13603
22 31 28.1818 2.88627
Run Code Online (Sandbox Code Playgroud)

和

set key outside
plot for [col=1:4] 'file' using 0:col with lines title columnheader
Run Code Online (Sandbox Code Playgroud)

结果是:

带有列标题的for循环图

  • 我相信`0`实际上是不必要的......使用col`的[col = 1:4]'foo'的情节 - 这只是一个FYI.我实际上更喜欢那里的脚本. (5认同)

j_s*_*j_s 11

只是要补充一点,您可以将for循环中的增量指定为第三个参数.如果要绘制每个第n列,这将非常有用.

plot for [col=START:END:INC] 'file' using col with lines
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它无论如何都会改变:

plot for [col=1:4:1] 'file' using col with lines
Run Code Online (Sandbox Code Playgroud)