web-dev-qa-db-fra.com

output.png de gnuplot n'est pas aussi bon que la figure du shell Prompt

Je trace souvent des graphiques dans gnuplot Prompt Shell, comme ceci:

gunuplot> plot sin(x) with linespoints pointtype 3

et le chiffre est super.

Aujourd'hui, je sauvegarde le graphique dans un .png fichier, comme ceci:

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

Ensuite, j'ouvre output.png avec eog dans Ubuntu, comme ceci:

$ eog output.png

J'ai trouvé que le fichier output.png affiché dans eog n'est pas aussi bon que la figure tracée dans Prompt Shell.

Pourquoi donc? Dois-je ajuster certains paramètres avant d'enregistrer le output.png?

PS

J'ai trouvé un moyen de contourner cela, d'abord,

set term postscript
set output "output.ps"

puis dans linux Shell,

$ convert output.ps output.jpg

De cette façon, une sorte de résoudre mon problème.

46
Alcott

La source de vos problèmes avec la qualité PNG est probablement l'antialiasing manquant dans le terminal png de Gnuplot. Puisque vous ne donnez aucune capture d'écran, je ne sais pas ce que vous voulez dire lorsque vous parlez d'une mauvaise largeur de ligne, mais voici à quoi cela ressemble pour moi (sur MacOS). Cette capture d'écran montre la sortie de la sortie aquaterm native de gnuplot:

A plot using gnuplot's native aquaterm output

Si nous créons un png en utilisant set term png, les lignes deviennent "nerveuses" et pixellisées:

The sine curve, plotted using the png terminal

Cependant, il existe une version du terminal png qui utilise les bibliothèques Cairo pour le rendu, et qui rend la sortie beaucoup plus fluide et plus agréable. set term pngcairo donne ce résultat:

The sine curve, plotted using the pngcairo terminal

Vous pouvez utiliser set terminal pour vérifier si cette version du terminal est disponible pour vous. Si c'est le cas, cela devrait vous faire économiser du travail de conversion et également donner une meilleure qualité d'image qu'un JPG (qui n'est pas un format idéal pour les dessins au trait).

75
jstarek

La taille par défaut de l'image PNG générée par gnuplot avec le terminal PNG est de 640x480 pixels. Cette résolution dans certains cas peut entraîner des graphiques "pixélisés" qui ne sont pas aussi agréables que ceux produits à l'écran avec le terminal par défaut (wxt).

Vous pouvez modifier la résolution de l'image de sortie à l'aide de l'option de taille:

set terminal png size <x,y>   

où x et y sont les nombres souhaités de pixels le long de l'axe horizontal et vertical, respectivement. Par exemple:

set terminal png size 1024,768

Veuillez noter que les images avec une résolution plus élevée entraîneront des fichiers proportionnellement plus gros sur le disque. Alternativement, vous pouvez essayer d'utiliser des terminaux non raster comme "post eps" ou "pdf" s'ils sont disponibles sur votre machine, ce qui peut vous donner des images évolutives et (relativement) portables de haute qualité sans encombrement disque important.

14
Giannis

Alternativement, si vous voulez des images de qualité professionnelle (prêtes pour la publication) avec gnuplot, vous devriez jeter un œil au terminal epslatex. Je l'ai largement utilisé pour ma thèse et mes articles avec des résultats très agréables, pratiquement aucun problème de pixellisation, la portabilité lors de la conversion d'images en pdf et presque toutes les capacités de Latex.

8
Miguel

Commentaire: vous utilisez un fichier JPEG comme exemple. Vous ne devriez probablement jamais utiliser JPEG pour les tracés linéaires à moins qu'ils aient des photographies en arrière-plan. JPEG n'est tout simplement pas conçu pour gérer les arêtes vives des dessins au trait.

1
djconnel