来自datafile的几个图

时间:2014-05-15 16:38:23

标签: gnuplot

我试图在数据文件中绘制一些测量值。以下是数据的简化示例:

1  7 100
1 15 200
1 31 300
2  7 150
2 15 300
2 31 400

如您所见,有三列。第二列应为x轴,第三列包含值。但是,我如何让gnuplot为第一列中的每个不同值创建一个新的图? 上面的例子应该产生两个图,一个叫1,一个叫2。

1 个答案:

答案 0 :(得分:3)

至少有两种不同的方法:

1)如果您知道每组的条目数,可以使用every。下面分别绘制了数据点0到2和3到5(第一个数据点在gnuplot中为零)和上面显示的数据样式:

plot "data" u 2:3 every ::0::2 title "First block", \
"data" u 2:3 every ::3::5 title "Second block"

如果您的数据块方便地用一个空行分隔,可以使用数据块单元而不是数据点来完成:

# Data separated by empty lines:
1  7 100
1 15 200
1 31 300

2  7 150
2 15 300
2 31 400

用以下内容绘制上述内容:

plot "data" u 2:3 every :::0::0 title "First block", \
"data" u 2:3 every :::1::1 title "Second block"

2)如果你不知道你拥有的每种类型的条目数量,你可以使用条件图,告诉gnuplot如果第1列等于1,它应该绘制点,否则应该忽略它(和对于第二个图而言相同,但在这种情况下,第1列必须等于2):

plot "data" u 2:($1 == 1 ? $3 : 1/0) title "First block", \
"data" u 2:($1 == 2 ? $3 : 1/0) title "Second block"

条件构造如下:

$1 == 1 ? - >第1列是否等于1?

$3 : 1/0 - >如果是,则绘制第3列,否则绘制1/0,在gnuplot中表示"忽略"数据点