output.png from gnuplot is not as good as the figure from prompt shell

Alcott picture Alcott · Jan 31, 2012 · Viewed 90.5k times · Source

I often plot graphs in gnuplot prompt shell, like this:

gunuplot> plot sin(x) with linespoints pointtype 3

and the figure showed up is great.

Today, I save the graph in a .png file, like this:

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

Then, I open output.png with eog in Ubuntu, like this:

$ eog output.png

I found that, the output.png displayed in eog is not as good as the figure plotted in prompt shell.

Why is that? Do I need to adjust some settings before save the output.png?

PS

I found that a way around it, first,

set term postscript
set output "output.ps"

then in linux shell,

$ convert output.ps output.jpg

This way some sort of solve the my problem.

Answer

jstarek picture jstarek · Feb 2, 2012

The source of your problems with the PNG quality is most likely the missing antialiasing in the png terminal of Gnuplot. Since you give no screenshots, I'm not sure what you mean when talking about bad linewidth, but here's how it looks for me (on MacOS). This screenshot shows the output of gnuplot's native aquaterm output:

A plot using gnuplot's native aquaterm output

If we create a png using set term png, the lines become "jumpy" and pixellated:

The sine curve, plotted using the png terminal

However, there is a version of the png terminal that uses the Cairo libs for rendering, and that makes the output far more smooth and nicer. set term pngcairo gives this result:

The sine curve, plotted using the pngcairo terminal

You can use set terminal to check whether this terminal version is available for you. If it is, this should save you conversion work and also give better image quality than a JPG (which is not an ideal format for line art).