gnuplot生成的output.png图像不如命令行中显示的图像质量好。

56

我经常在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中我使用eog打开output.png,像这样:

$ eog output.png

我发现在eog中显示的output.png图片不如终端中绘制的好。

为什么会这样?保存output.png前需要调整一些设置吗?

PS

我找到了一个解决方法,首先,

set term postscript
set output "output.ps"

然后在 Linux shell 中执行:

$ convert output.ps output.jpg

这种方式在某种程度上解决了我的问题。


你能详细说明一下“不如”的含义吗?或者可以提供一张截图,与你创建的PNG进行比较吗? - Woltan
通过“不如”我指的是在命令行中绘制的图形使用了“wxt”,在线宽方面视觉效果非常好。但是在“output.png”文件中的图形呈现了不同的视图,即线宽变差了,但我仍然能够理解这个图形,只是不喜欢这个视图。 - Alcott
1
据我所知,gnuplot中的每个终端看起来都有些不同。您可以使用gnuplot test函数检查每个终端的输出。 - Woltan
注释:您使用JPEG文件作为示例。除非它们具有照片作为背景,否则您可能永远不应该使用JPEG进行线条绘图。JPEG根本没有设计处理线条绘图的锐利边缘。 - djconnel
3个回答

86
你的PNG质量问题很可能是Gnuplot中PNG终端缺乏抗锯齿处理导致的。由于你并没有提供截图,我不确定你提到的“坏的线条宽度”具体指什么,但以下是我在MacOS上看到的情况。这个截图展示了gnuplot本地aquaterm输出的结果:使用gnuplot的本地aquaterm输出绘制的图表
如果我们使用set term png创建PNG文件,那么线条就会变得“抖动”和像素化:用png终端绘制的正弦曲线
然而,有一种使用Cairo库进行渲染的PNG终端版本,可以使输出结果更加平滑和漂亮。使用set term pngcairo可得到以下结果:使用pngcairo终端绘制的正弦曲线
您可以使用set terminal检查此终端版本是否适用于您。如果适用的话,这将减少转换工作,并比JPG(不是理想的线条艺术格式)获得更好的图像质量。

25

使用PNG终端生成的gnuplot PNG图像的默认大小为640x480像素。在某些情况下,这种分辨率可能会导致“像素化”的图形,不如使用默认(wxt)终端在屏幕上产生的效果好。

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

set terminal png size <x,y>   

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

set terminal png size 1024,768
请注意,分辨率更高的图像会导致磁盘上文件大小成比例增加。或者,您可以尝试使用非光栅终端,如“post eps”或“pdf”,如果这些选项在您的计算机上可用,则可能会提供高质量可缩放且(相对)易于携带的图像,并且不会占用太大的磁盘空间。

3
这也改变了相对字体大小——图形发生变化,但标签、标题等内容不会改变。 - Nathan Musoke

10

如果您想要具有专业(出版级别)质量的gnuplot图像,您可以考虑使用epslatex终端。我在我的论文和文章中广泛使用它,结果非常好,几乎没有像素化问题,在将图像转换为pdf时具有可移植性,并且几乎具有所有Latex的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接