23

我有以下 dat 文件,名为ls.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

这将产生以下图表:

在此处输入图像描述

我期待的是三个线图,它们都应该上升,但速度不同。谁能看到这里发生了什么?我敢肯定,这一定是一件非常愚蠢的事情。

4

4 回答 4

29

我认为你的问题是你的版本号。尝试制作 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
于 2012-05-29T01:45:23.527 回答
11

安迪拉斯是完全正确的。一个小的补充,试试这个(例如)

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

这将使您的数据文件保持正确的顺序,但也会在 x 轴上保留您的版本 tic 标签。

于 2012-05-29T02:14:31.747 回答
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

然后,您可以将上面的 plot 命令用于数字以逗号分隔的数据文件。

于 2014-12-29T20:34:17.957 回答
1

无论您的ls.dat中的分隔符是什么,您都可以将其指定给gnuplot

set datafile separator "\t"
于 2016-02-04T12:52:41.490 回答