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

标签 gnuplot rgb

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

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 组不同的点,每组都有不同的颜色。现在,我的目标是修改此脚本,以便如果第三个数据列为 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

这正是我想要的,当然,两组现在都以绿色绘制。有没有办法根据需要绘制黑色,同时使每个索引具有不同的颜色?

最佳答案

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

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 表示使用第三列中给出的任何“样式索引”的颜色。我在第三列变量上设置了过滤器,如果该列中的数据不为 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,\

关于gnuplot - 根据多个数据 block 的列值改变点颜色 gnuplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427704/

相关文章:

plot - Gnuplot:忽略数据文件中第一行的最短方法

java - RGB 创建时没有语句错误

Javascript 准确地将 HSB/HSV 颜色转换为 RGB

python - Python中的相似颜色检测

gnuplot - gnuplot 中的复杂布局 : mixing text and graphs

plot - 在 Gnuplot 中显示 X 轴并与 y 轴范围对齐

gnuplot 截断小数位

graph - 如何在 Gnuplot 中创建类似 Excel 的平滑?

go - 将 RGBA 图像转换为灰度 Golang

python - 使用 numpy 和 pil 将 565(16bit-color) 转换为 888(24bit-color)