【问题标题】:vary point color based on column value for multiple data blocks gnuplot根据多个数据块gnuplot的列值改变点颜色
【发布时间】:2014-09-11 04:54:08
【问题描述】:

我的问题与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

这正是我想要的,当然这两个集合现在都绘制为绿色。有什么方法可以根据需要绘制黑色,但也可以使每个索引颜色不同?

【问题讨论】:

    标签: gnuplot rgb


    【解决方案1】:

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

    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,\
    

    【讨论】:

    • 如果可以的话,我有一个后续问题。让我知道我是否应该将其作为一个单独的问题发布。我现在通过引用索引 0、1 和 2 来绘制红色、绿色或黑色的东西。我的新问题是,我可以用颜色渐变绘制第三列具有非零值的所有内容(使用类似设置调色板rgbformulae 33,13,10),然后如果第三列的值为零,则将其绘制为黑色?
    • @whatsherface -- 如果我理解正确,只需将我的答案和 andyras 的答案结合起来就可以实现
    • 我相信这会给我离散的颜色,但我想使用基于第三列数据的渐变。据我了解, ($8 == 0.0 ? 0 : 1) 表示:如果第 8 列为零,则绘制由“0”(黑色)引用的颜色,如果不是,则绘制由“1”引用的颜色”。我需要的是:如果为零,绘制黑色,如果不是,使用渐变 rgbformulae 33,13,10。我可以使用单个索引引用颜色渐变吗?
    • @whatsherface -- 发布一个我认为的新问题。我很确定我可以回答这个问题,但是在 cmets 中这样做并不公平。 (我敢打赌,你也可以在 cmets 之外给出更好的解释)。
    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 2021-11-05
      • 2011-12-14
      相关资源
      最近更新 更多