我想绘制m*n
矩阵,其中每个元素都是rgb
三元组,如下面的 gnuplot 代码段(3*3
的rgb矩阵):
$cross << EODcross
255 0 0 0 0 0 255 0 0
0 0 0 0 0 0 0 0 0
255 0 0 0 0 0 255 0 0
EODcross
红色背景上的黑色十字架。如果需要,我可以更改列和颜色组件之间的分隔符。
我可以实现所需的避免set palette rgbformulae i,j,k
并直接使用$cross
数据吗?类似的东西:
plot '$cross' matrix with image rgb
如果没有,我可以传递24位宽的整数(当然,在文本表示中,即预先计算并转换为文本r + 256 * (g + 256 * b)
或b + 256 * (g + 256 * r)
值)。 i,j,k
三元组应该如何正确地将上述表单中表示的rgb
值映射到调色板颜色空间?
答案 0 :(得分:2)
rgbimage
绘图样式需要五列,后三位列出[0:255]范围内的红色,蓝色和绿色值。因此,您可以使用任何24位整数颜色表示,因为在绘制时必须自己提取颜色通道:
$data <<EOD
0xff 0 0xff00
0 0 0
0xffff 0 0xff00ff
EOD
r(x) = int(x) >> 16
g(x) = (int(x) >> 8) & 0xff
b(x) = int(x) & 0xff
plot $data matrix using 1:2:(r($3)):(g($3)):(b($3)) with rgbimage
答案 1 :(得分:1)
似乎ascii矩阵数据和rgbimage不能组合在一起。
如果您可以自由格式化输入数据,则将图像的每一列放入一个块中,将块分隔两个空行,如下所示:
$cross << EODcross
255 0 0
0 0 0
255 0 0
0 0 0
0 0 0
0 0 0
255 0 0
0 0 0
255 0 0
EODcross
然后像这样绘制十字架:
plot $cross using -2:0:1:2:3 with rgbimage
using
部分中的数字-2和0对应于伪列&#34;块索引&#34;和&#34;分别在一个块&#34;内。它们用作x和y值。 plot with rgbimage
样式需要x,y,r,g,b
个数据。
结果如下: