You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot的pngcairo终端为何无法在图像边界绘制数据?

解决Gnuplot pngcairo终端矩阵转PNG的边缘空白问题

问题出在Gnuplot的with image绘制逻辑和坐标范围的匹配上:默认情况下,矩阵的每个元素对应像素块的中心,而非像素的左上角。当你设置xrange [0:6]时,实际绘制的像素块会延伸到x=-0.5到x=6.5的范围,超出了7px终端的边界,加上终端默认的微小边距,就会出现未绘制的空白区域。

以下是修正后的代码,可以让矩阵数据完全填满7x7的PNG图像:

set term pngcairo transparent size 7, 7
# 使用屏幕坐标强制边距为0,而非数据坐标的margins
set lmargin at screen 0
set rmargin at screen 1
set bmargin at screen 0
set tmargin at screen 1
unset border
unset xtics
unset ytics
unset xlabel
unset ylabel
unset colorbox
unset key
set palette defined (0 "white", 1 "blue") maxcolors 2
set output 'test.png'
# 调整坐标范围,让像素块刚好覆盖整个终端尺寸
set xrange [-0.5:6.5]
set yrange [-0.5:6.5]

plot '-' matrix with image notitle
1   1   1   1   1   1   1
1   1   1   0   1   1   1
1   1   0   0   0   1   1
1   0   0   0   0   0   1
1   1   0   0   0   1   1
1   1   1   0   1   1   1
1   1   1   1   1   1   1
e
unset output

关键修改说明:

  • 屏幕坐标边距:set *margin at screen 0/1直接将边距绑定到屏幕的边缘,彻底消除终端预留的空白空间,比set margins 0,0,0,0更彻底(后者是基于数据坐标的边距,仍可能存在微小偏移)。
  • 坐标范围调整:[-0.5:6.5]的范围让每个矩阵元素对应的像素块从x=0到x=1、x=1到x=2……刚好填满7px的宽度,每个像素块完全覆盖终端的一个像素位置。

测试后生成的PNG会完全匹配你的矩阵数据,边缘没有空白或透明背景层。

内容的提问来源于stack exchange,提问作者armando.sano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:52:53