如何在Gnuplot中使得第三列等于零时,将点变为一种颜色,否则变为另一种颜色?

24

我需要根据一个列中的颜色变化来对一行数值的点颜色进行不同设置。数据如下:

# x y z
1, 3, 0  
1, 5, 6  
3, 5, 2  
4, 5, 0
如果该列为零,则颜色应为一个值,如果第三列的值非零,则颜色应为另一个值。
所以,我假设:
plot "./file.dat" u 1:2:3 with points palette

如此处所述:https://dev59.com/4m865IYBdhLWcg3wLrlE#4115001并不能完全奏效。

在以上示例数据中,该gnuplot命令提供了三种不同的颜色,而不是我要找的两种。


更一般的条件:https://dev59.com/Lmoy5IYBdhLWcg3wL7L1 - Ciro Santilli OurBigBook.com
2个回答

31

这可能接近你所需的内容:

set palette model RGB defined ( 0 'red', 1 'green' )
plot[0:5][0:6] "file.dat" u 1:2:( $3 == 0 ? 0 : 1 ) with points palette

你可以进一步去除“噪音”:

unset key
unset colorbox
plot[0:5][0:6] "file.dat" u 1:2:( $3 == 0 ? 0 : 1 ) with points pt 7 ps 3 palette

如果仅在零和非零之间区分有意义。


1

您可以通过调整调色板来进行调整

set palette defined (-0.1 "blue", 0 "red", 0.1 "blue")

这会将红色放在大约3,蓝色放在0和6左右,因此无法实现OP的目标。我已经在你的想法上进行了改进,见下文! - vaettchen

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