使用gnuplot绘制多条线图

28

我有一个名为ls.dat的dat文件包含以下内容:

# Gnuplot script file for "ls"
# Version       Removed Added   Modified
8.1     0       0       0
8.4     0       0       4
8.5     2       5       9
8.6     2       7       51
8.7     2       7       51
8.8     2       7       51
8.9     2       7       51
8.10    2       7       51
8.11    2       8       112
8.12    2       8       112
8.13    2       17      175
8.17    6       33      213

我正在尝试使用以下内容绘图:

plot "ls.dat" using 1:2 title 'Removed' with lines,\
     "ls.dat" using 1:3 title 'Added' with lines,\
     "ls.dat" using 1:4 title 'Modified' with lines

这会生成以下图形:

输入图像描述

我期望看到三条线,它们都应该上升,但速度不同。有人能看出这里发生了什么吗?我确定这一定是非常愚蠢的事情。


1
你是怎么得到这个Gnuplot GUI的?有什么命令可以启动这个窗口吗? - Jeef
3
@Jeef 在 OSX 中使用的是gnuplot-X11。你也可以在Qt中使用gnuplot。这取决于你终端类型设置在哪里,你得到什么。我的设置是gnuplot-qt。 - Léo Léopold Hertz 준영
1
谢谢 - 这是很久以前的事情了,我甚至都忘记自己当时在做什么了! :) - Jeef
4个回答

33

我认为你的问题在于版本号。尝试将8.1更改为8.01,以此类推。那样应该可以按正确顺序放置点。

或者,你可以绘制using X,其中X是你想要的列号,而不是using 1:X。这将在y轴上绘制这些值和x轴上的整数。尝试:

plot "ls.dat" using 2 title 'Removed' with lines, \
     "ls.dat" using 3 title 'Added' with lines, \
     "ls.dat" using 4 title 'Modified' with lines

你可能还想在y轴上使用对数刻度(使用set log y),因为你的数字跨越了如此大的范围。 - andyras
关于 using X 的观点很好--我认为你也可以使用 using X:xtic(1) 来保持你想要的版本号,不过我还没有尝试过... (+1) - mgilson
2
而且,andyras,你在我获得铜色gnuplot徽章的探索中投下了一块真正的阴影,因为你在我看到这些问题之前就回答了它们;)。 - mgilson

11

andyras是完全正确的。一个小修改,尝试这样做(例如)

plot 'ls.dat' using 4:xtic(1)

这将使您的数据文件保持正确的顺序,同时保留 x 轴上版本刻度标签的信息。


8
除了上面的回答外,以下命令也可以使用。我发布这篇文章是因为对我来说更有意义。在每种情况下都是“使用x-value-column:y-value-column”。
plot 'ls.dat' using 1:2, 'ls.dat' using 1:3, 'ls.dat' using 1:4 

请注意,上述命令假定您有一个名为ls.dat的文件,其中包含以制表符分隔的数据列,其中第1列是x,第2列是y1,第3列是y2,第4列是y3。

针对.csv文件类型进行编辑....

请注意,如果您有一个.csv文件,则使用gnuplot命令时需要将命令修改为:

set datafile separator comma

如果数据文件中的数字是由逗号分隔的,您可以使用上述绘图命令。


嗨,汤姆。你的gnuplot版本是多少? - Scott Yang
@ScottYang 当我写答案时,版本可能是4.2,但老实说我不确定。我认为任何版本的Gnuplot都应该使用上述命令工作,因为我认为它已经相当标准了一段时间。我只是用它来绘制一个数据文件与Gnuplot 5.0n --- 另外请注意,我也在答案中加入了编辑以使其更清晰。 - tom

1
无论您在ls.dat文件中使用的分隔符是什么,您都可以将其指定给gnuplot:
set datafile separator "\t"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接