web-dev-qa-db-ja.com

gnuplotのoutput.pngは、プロンプトシェルの図ほど良くありません

次のように、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シェルで、

$ convert output.ps output.jpg

このようにして、私の問題を何らかの形で解決します。

46
Alcott

PNGの品質に関する問題の原因は、Gnuplotのpng端子に欠けているアンチエイリアスである可能性が高いです。スクリーンショットを提供していないので、悪い線幅について話すときの意味はわかりませんが、(MacOSで)私に見えるのは次のとおりです。このスクリーンショットは、gnuplotのネイティブアクアターム出力の出力を示しています。

A plot using gnuplot's native aquaterm output

set term pngを使用してpngを作成すると、線は「ジャンピー」になり、ピクセル化されます。

The sine curve, plotted using the png terminal

ただし、レンダリングにCairoライブラリを使用するpng端末のバージョンがあり、それにより出力がはるかに滑らかで見やすくなります。 set term pngcairoは次の結果を提供します。

The sine curve, plotted using the pngcairo terminal

set terminalを使用して、この端末バージョンが使用可能かどうかを確認できます。そうである場合、これにより変換作業が節約され、JPG(ラインアートには理想的な形式ではありません)よりも優れた画質が得られます。

75
jstarek

PNG端末で生成されたgnuplotのPNG画像のデフォルトサイズは640x480ピクセルです。特定の場合、この解像度は、デフォルト(wxt)ターミナルを使用して画面上で生成されるグラフほどニースではない「ピクセル化された」グラフになる可能性があります。

サイズオプションを使用して、出力画像の解像度を変更できます。

set terminal png size <x,y>   

ここで、xとyは、それぞれ水平軸と垂直軸に沿った望ましいピクセル数です。例えば:

set terminal png size 1024,768

画像の解像度が大きいと、ディスク上のファイルが比例して大きくなることに注意してください。または、マシンで使用可能な場合は「post eps」または「pdf」などの非ラスター端末を使用してみてください。これにより、大きなディスクフットプリントなしで高品質でスケーラブルで(比較的)ポータブルな画像が得られます。

14
Giannis

あるいは、gnuplotでプロフェッショナルな(出版準備が整った)品質の画像が必要な場合は、epslatex端末を見てください。私は非常に素晴らしい結果、事実上ピクセル化の問題、画像をpdfに変換するときの移植性、およびLatexのほとんどすべての機能を備えた論文と論文に広範囲に使用しました。

8
Miguel

コメント:JPEGファイルを例として使用します。背景として写真がない限り、ラインプロットにJPEGを使用しないでください。 JPEGは、線画の鋭いエッジを処理するようには設計されていません。

1
djconnel