gnuplot:如何在每个像素上无边距绘制一个2D数组元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gnuplot:如何在每个像素上无边距绘制一个2D数组元素相关的知识,希望对你有一定的参考价值。

我正在尝试使用gnuplot 5.0绘制2D数据数组,没有边界,边框或轴...只是代表某些数据的2D图像(.png或.jpg)。我想使用无缩放/插值等和边缘没有多余的白色像素。 每个数组元素对应于图像中的一个像素

到目前为止,当我尝试将页边距设置为0甚至使用pixels标志时,在图像的右边界和顶部边界上我仍然留下一排白色像素。

如何获取仅具有数据数组的逐像素表示形式的图像文件,而没有其他内容?

gnuplot脚本:

#!/usr/bin/gnuplot --persist

set terminal png size 400, 200

set size ratio -1
set lmargin at screen 0
set rmargin at screen 1
set tmargin at screen 0
set bmargin at screen 1

unset colorbox
unset tics
unset xtics
unset ytics
unset border
unset key

set output "pic.png"

plot "T.dat" binary array=400x200 format="%f" with image pixels notitle

来自Fortran 90的示例数据:

program main
implicit none
integer, parameter :: nx = 400
integer, parameter :: ny = 200
real, dimension (:,:), allocatable :: T
allocate (T(nx,ny))

T(:,:)=0.500
T(2,2)=5.
T(nx-1,ny-1)=5.
T(2,ny-1)=5.
T(nx-1,2)=5.

open(3, file="T.dat", access="stream")
write(3) T(:,:)
close(3)

end program main

extra pixels

我正在尝试使用gnuplot 5.0绘制2D数据数组,没有边界,边框或轴...只是代表某些数据的2D图像(.png或.jpg)。我想让每个数组元素都可以...

答案

这应该是一个容易的任务,但是显然不是。以下可能是一个(麻烦的)解决方案,因为所有其他尝试都失败了。我怀疑某些图形库存在一个问题,以gnuplot用户身份可能无法解决。

以上是关于gnuplot:如何在每个像素上无边距绘制一个2D数组元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Gnuplot 中绘制噪声值的平均值

Opengl像素完美2D绘图

如何在 C++ 中使用 GNUplot 绘制图形

使用 gnuplot 绘制获得的权力

在gnuplot中绘制两个轴

如何在脚本中读取不规则编号的数据文件以制作 gnuplot 图像?