来自gnuplot的output.png不如提示shell中的数字好

Alc*_*ott 48 gnuplot

我经常在gnuplot提示shell中绘制图形,如下所示:

gunuplot> plot sin(x) with linespoints pointtype 3
Run Code Online (Sandbox Code Playgroud)

这个数字显示出来很棒.

今天,我将图表保存在一个.png文件中,如下所示:

gnuplot> set term png
gnuplot> set output "output.png"
gunuplot> plot sin(x) with linespoints pointtype 3
Run Code Online (Sandbox Code Playgroud)

然后,我打开output.pngeog在Ubuntu,就像这样:

$ eog output.png
Run Code Online (Sandbox Code Playgroud)

我发现,显示的output.png eog不如提示shell中绘制的数字好.

这是为什么?在保存之前我需要调整一些设置output.png吗?

PS

我找到了解决它的方法,首先,

set term postscript
set output "output.ps"
Run Code Online (Sandbox Code Playgroud)

然后在linux shell中

$ convert output.ps output.jpg
Run Code Online (Sandbox Code Playgroud)

这种方式解决了我的问题.

jst*_*rek 77

PNG质量问题的根源很可能是Gnuplot的png终端缺少抗锯齿.由于你没有给出任何截图,我不确定你在谈论坏线宽时的意思,但这就是它在我看来的样子(在MacOS上).此屏幕截图显示了gnuplot的原生aquaterm输出的输出:

使用gnuplot的原生aquaterm输出的情节

如果我们创建一个png使用set term png,那么这些行变得"跳跃"并且像素化:

正弦曲线,使用png终端绘制

但是,有一个版本的png终端使用Cairo libs进行渲染,这使得输出更加平滑和更好.set term pngcairo给出了这个结果:

正弦曲线,使用pngcairo终端绘制

您可以使用set terminal检查此终端版本是否可用.如果是这样,这应该可以节省您的转换工作,并且还可以提供比JPG更好的图像质量(这不是艺术线条的理想格式).


小智 16

使用PNG终端生成的gnuplot的PNG图像的默认大小为640x480像素.在某些情况下,此分辨率可能会导致"像素化"图形不如使用默认(wxt)终端在屏幕上生成的那样好.

您可以使用size选项更改输出图像的分辨率:

set terminal png size <x,y>   
Run Code Online (Sandbox Code Playgroud)

其中x和y分别是沿水平轴和垂直轴的所需像素数.例如:

set terminal png size 1024,768
Run Code Online (Sandbox Code Playgroud)

请注意,分辨率较高的图像会导致磁盘上的文件按比例增大.或者,您可以尝试使用非光栅终端,如"post eps"或"pdf"(如果在您的计算机上可用),这可以为您提供高质量的可扩展和(相对)便携式映像,而不会占用大量磁盘.

  • 这也会改变相对字体大小——绘图改变,但标签、标题等不变。 (3认同)

Mig*_*uel 8

或者,如果您想要使用gnuplot的专业(出版物就绪)质量图像,您应该看看epslatex终端.我已经广泛使用它来完成我的论文和论文,结果非常好,几乎没有像素化问题,将图像转换为pdf时的可移植性,以及Latex的几乎所有功能.