我如何在gnuplot中做到这一点:
plot "test.csv" using 1:2 if value_in_column_3 == 80.0它应该只选择列3 == 80.0的那些行,而忽略所有其他行(它不应该为其他行绘制0,只需忽略它们)
提前谢谢。
发布于 2011-07-04 03:44:35
考虑下面的数据集(1.dat),
1 0.8 0
2 0.6 0
3 0.9 1
4 1.1 0
5 0.7 0
6 0.6 1我们只想在第三列等于零时绘制前两列。然后你可以试试这个:
plot '1.dat' using 1:($3==0?$2:1/0)(归功于Gnuplot邮件列表上的markjoe。)
发布于 2012-02-08 03:16:42
如果想要有条件地在包含文本的另一列上绘制:
数据
1 0.8 a
2 0.6 a
3 0.9 a
1 2.1 b
2 1.7 b
3 1.6 b代码
set terminal postscript color
set xrange [0:4]
set yrange [0:3]
plot "1.dat" using 1:(stringcolumn(3) eq "a"? $2:1/0) title "a" lc rgb "blue" ,\
"" using 1:(stringcolumn(3) eq "b"? $2:1/0) title "b" lc rgb "red"命令
gnuplot < 1.par > 1.ps发布于 2012-08-30 19:59:57
正如chl上面所说的,在gnuplot中要做到这一点的唯一方法是相当复杂的:您必须使用gnuplot的三元?:运算符在您想要从数据集中过滤出的点上生成一个数字错误。
我在这里可能有偏见,因为我是这个项目的作者,但你可能想看看Pyxplot http://www.pyxplot.org.uk (也是免费的和开源的),它是由一群对这种粗糙的语法有点厌倦的gnuplot用户编写的。
它的语法与gnuplot非常相似,但有一些扩展。对于您想要的,您可以在plot命令中指定"select criterion“,并且仅当它测试True时才包含点。有关详细信息,请参阅http://pyxplot.org.uk/current/doc/html/sec-select_modifier.html。
https://stackoverflow.com/questions/6564561
复制相似问题