如何使用rgb图像绘制矩阵?

时间:2017-02-02 19:46:09

标签: matrix colors gnuplot rgb palette

我想绘制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值映射到调色板颜色空间?

2 个答案:

答案 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

enter image description here

答案 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个数据。

结果如下:

black cross