我正在尝试在数据文件中绘制一些测量值。这是数据的简化示例:
1 7 100
1 15 200
1 31 300
2 7 150
2 15 300
2 31 400
如您所见,共有三列。第二列应为x轴,第三列应包含该值。但是,如何使gnuplot为第一列中的每个不同值绘制一个新图?上面的示例应生成两个图,一个称为1,另一个称为2。
至少有两种不同的方法可以解决此问题:
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中表示“忽略”数据点
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句