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

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

 gunuplot> plot sin(x) with linespoints pointtype 3 

而且数字显示很好。

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

 gnuplot> set term png gnuplot> set output "output.png" gunuplot> plot sin(x) with linespoints pointtype 3 

然后,我在Ubuntu中打开output.pngeog ,如下所示:

 $ eog output.png 

我发现, eog显示的output.png不如在提示符中绘制的图。

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

PS

我发现一个解决办法,首先,

 set term postscript set output "output.ps" 

那么在linux shell中,

 $ convert output.ps output.jpg 

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

PNG质量问题的根源很可能是Gnuplot的pngterminal中缺less的抗锯齿function。 由于您没有提供截图,所以在讨论线路不良时,我不确定您的意思,但是这里是它的样子(在MacOS上)。 该屏幕截图显示了gnuplot本机aquaterm输出的输出:

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

如果我们使用set term png创build一个png,那么这些行会变得“跳跃”并像素化:

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

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

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

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

用PNGterminal生成的gnuplot的PNG图像的默认大小是640×480像素。 在某些情况下,这种分辨率可能会导致“像素化”graphics,这不像使用默认(wxt)terminal在屏幕上产生的graphics那么好。

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

 set terminal png size <x,y> 

其中x和y分别是沿着水平轴和垂直轴的期望数量的像素。 例如:

 set terminal png size 1024,768 

请注意,分辨率较高的图像会导致磁盘上的文件比例较大。 或者,您可以尝试使用非PSD光栅terminal,例如“POST eps”或“pdf”(如果您的机器上有这种terminal),可以为您提供高质量的可扩展和(相对)便携式图像,而不需要大的磁盘空间。

或者,如果您想要使用gnuplot进行专业(发布)的高品质图像,则应该查看epslatexterminal。 我用它广泛地用于论文和论文,结果非常好,几乎没有像素问题,将图像转换为pdf时的可移植性,以及Latex的几乎所有function。

评论:您使用JPEG文件作为例子。 除非他们有照片作为背景,否则不应该使用JPEG作为线条图。 JPEG不是为了处理线条图的锐利边缘而devise的。