根据多个数据块gnuplot的列值改变点颜色

时间:2012-09-14 15:34:49

标签: gnuplot rgb

我的问题与this非常相似,我可以从中学到很多东西。但是,我正在使用多个数据块,如下所示:

1 2 3
4 5 6
7 8 0
4 3 0


4 5 7
2 3 0
4 5 0
5 6 7

我正在密谋他们:

plot "file.txt" index 0 u 1:2 w points pt 1,\
     "file.txt" index 1 u 1:2 w points pt 2

创建2个不同的点集,每个点都有不同的颜色。现在,我的目标是修改此脚本,以便在第3个数据列为0时,该点的颜色将变为黑色。我希望其他方面保持它们目前的颜色(意味着彼此不同)。我这样做了:

set palette model RGB defined ( 0 'black', 1 'green' )
unset colorbox
plot file index 0 u 1:2:( $3 == 0 ? 0 : 1 ) w points pt 1 palette,\
     file index 1 u 1:2:( $3 == 0 ? 0 : 1 ) w points pt 2 palette

这完全符合我的要求,当然两个套装现在都以绿色绘制。有没有办法根据需要绘制黑色的,但也使每个索引成为不同的颜色?

2 个答案:

答案 0 :(得分:3)

这就是特殊的“变量”颜色:

plot 'test.dat' i 0 u 1:2:($3 == 0? 0:1) w p pt 1 lc variable,\
     'test.dat' i 1 u 1:2:($3 == 0? 0:2) w p pt 2 lc variable
在此上下文中,

variable表示使用第三列中给出的“样式索引”的颜色。我在第3列变量上设置过滤器,如果该列中的数据不是0,则将第三列转换为常量(1或2)。

另一种不那么直接的方法(因为你使用积分而起作用)是:

plot 'test.dat' i 0 u 1:($3 == 0? 1/0: $2) w p pt 1 lc rgb "red",\
     'test.dat' i 0 u 1:($3 == 0? $2:1/0) w p pt 1 lc rgb "black,\
     'test.dat' i 1 u 1:($3 == 0? 1/0: $2) w p pt 1 lc rgb "green",\
     'test.dat' i 1 u 1:($3 == 0? $2:1/0) w p pt 1 lc rgb "black,\

答案 1 :(得分:2)

它应该可以在调色板中定义一个额外的点:

set palette model RGB defined ( 0 'black', 1 'green', 2 'red')
unset colorbox
plot file index 0 u 1:2:( $3 == 0 ? 0 : 1 ) w points pt 1 palette,\
     file index 1 u 1:2:( $3 == 0 ? 0 : 2 ) w points pt 2 palette

enter image description here