与 在 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
但标签显示为黑色:
我做错了什么?
您已经很接近了,但为什么要将列值除以 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
结果: