image
image、rgbimage和rgbalpha绘图样式均以 2D 或 3D 方式将均匀采样的数据值网格投影到平面上。输入数据可以是实际的位图化图像,可能是从诸如 PNG 之类的标准格式转换而来,或者单纯是一个数值数组。
figure_heatmap
例图演示了从一组标量值生成的热度图。当前的调色板将用于映射每个值到分配给相应像素的颜色。
plot '-' matrix with image
5 4 3 1 0
2 2 0 0 1
0 0 0 1 0
0 1 2 4 3
e
e
figure_rgb3D
输入 2D 图像的每个像素(数据点)在图中将变成一个矩形或者平行六面体。每个数据点的坐标决定平行六面体的中心。也就是说,一个 M x N 的数据集将形成一个具有 M x N 个的像素的图像。这不同于 pm3d 绘图样式,其中 M x N 的数据集将形成一个具有 (M-1) x (N-1) 个元素的表面。二进制图像数据网格的扫描方向可以通过额外的关键字进一步控制。参见binary keywords flipx、keywords center和keywords rotate。
figure_scaled_image
通过指定每个像素的 x 和 y 范围,图像数据可以缩放以填充 2D 绘图坐标系中特定的矩形。参见binary keywords dx和dy。为了生成上面的例图,多次调用了输入图像,每次都指定了 dx, dy 和 origin。输入的建筑物 PNG 图像有 50x128 像素。高的建筑使用dx=0.5 dy=1.5进行映射,矮的建筑用dx=0.5 dy=0.35做映射。
image样式处理包含灰度或颜色调色板值的输入像素。因此 2D 图 (plot命令) 需要 3 列数据 (x,y,value),而 3D 图 (splot命令) 需要 4 列数据 (x,y,z,value)。
rgbimage样式处理由红、绿、蓝 3 个独立的分量值描述的输入像素。因此plot需要 5D 数据 (x,y,r,g,b),而splot需要 6D 数据 (x,y,z,r,g,b)。各个红、绿、蓝分量都假定位于 [0:255] 范围内。这符合 PNG 和 JPEG 文件的使用规定 (参见二进制文件类型)。但是,某些数据文件使用了另一种约定,其 RGB 分量是 [0:1] 范围内的浮点值。要在rgbimage样式中使用该种数据,颜色分量值必须重新缩放到 [0:255] 范围。
rgbalpha样式处理含有红、绿、蓝分量和 alpha 通道(透明度)信息的输入像素,因此plot需要 6D 数据 (x,y,r,g,b,a),而splot需要 7D 数据 (x,y,z,r,g,b,a)。r, g, b 和 alpha 分量都假定位于 [0:255] 范围内。要绘制 RGBA 分量是 [0:1] 范围内浮点值的数据,必须先将各分量重新缩放到 [0:255] 范围。
透明度
rgbalpha绘图样式假定输入数据的每个像素都包含一个在 [0:255] 范围内的 alpha 值。alpha = 0
的像素是纯粹透明的,不会改变图形下层的内容。alpha = 255
的像素是纯粹不透明度。所有终端类型都可以处理这两种极端情形。0 < alpha < 255
的像素是部分透明度。不支持部分透明的终端类型会将它们舍入到 0 或 255。
图像像素
某些终端使用了设备或库专属的优化来渲染矩形 2D 区域内的图像数据。这有时会产生不靠谱的输出,例如,不良的裁剪或缩放、边缘缺失等。pixels关键字告诉 gnuplot 使用通用代码逐个像素渲染图像。这种渲染模式比较慢,并可能产生更大的输出文件,但是应该能在所有终端上产生一致的渲染结果 (pixels选项中之前的 gnuplot 版本中曾经被称为failsafe模式)。
示例
plot 'data' with image pixels