从数据行读取 RGB 颜色的 Gnuplot 标签

问题描述 投票:0回答:1

在 gnuplot 中使用标签样式设置变量文本颜色和点颜色相关,但不完全相同。我在文件“test.dat”中有一组数据:

   643.8 0.09417 28.9 00  24 255 0
   483.1 0.09232 28.0 01  255 0 120
   518.5 0.08943 29.6 02  11 65 255

我想要一个 3D 绘图,其中前三列被解释为 x y z 坐标,第四列被解释为标签/点符号,然后我想要以 RGB 颜色编码的标签颜色,该标签颜色应取自第 5、6 和第 7 列。我试试这个:

rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b)
splot "test.dat" u 1:2:3:4:(rgb($5/255,$6/255,$7/255)) with labels tc rgb variable notitle

但标签显示为黑色:

我做错了什么?

gnuplot
1个回答
0
投票

您已经很接近了,但为什么要将列值除以 255?

一些评论:

  • 在下面的例子中我使用了,例如
    column(5)
    而不是较短的
    $5
    ,因为在某些情况下您可能必须转义
    $
    并使用
    \$5
    代替。所以,
    column(5)
    更长但“通用”。除了
    5
    ,您还可以使用变量。
  • 没有必要使用
    int()
    。 gnuplot 将截断。
  • 您还可以使用十六进制数字
    0x10000
    0x100
    来乘以 R、G、B 值(更容易记住并且不易出现拼写错误)。

脚本:

### variable label color from R,G,B columns
reset session

$Data <<EOD
643.8 0.09417 28.9 00  24 255   0
483.1 0.09232 28.0 01 255   0 120
518.5 0.08943 29.6 02  11  65 255
EOD

rgb(colR,colG,colB) = 0x10000*column(colR) + 0x100*column(colG) + column(colB)

splot $Data u 1:2:3:4:(rgb(5,6,7)) w labels tc rgb var
### end of script

结果:

© www.soinside.com 2019 - 2024. All rights reserved.