来自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.png
和eog
,如下所示:
$ 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输出的输出:
如果我们使用set term png
创build一个png,那么这些行会变得“跳跃”并像素化:
但是,有一个使用Cairo库进行渲染的pngterminal版本,这使得输出更加平滑和更好。 set term 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的。