2012-01-31 5 views
44

często wykreślić wykresy w gnuplot poleceń powłoki, tak:output.png z gnuplot nie jest tak dobry jak postać z poleceń powłoki

gunuplot> plot sin(x) with linespoints pointtype 3 

i postać pojawiła się jest super.

Dziś zapisać wykres w pliku .png, tak:

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

Potem otwórz output.png z eog w Ubuntu, jak to:

$ eog output.png 

Znalazłem tym, output.png wyświetlany w eog nie jest tak dobry, jak rysunek wykreślony w szybkiej powłoce.

Dlaczego tak jest? Czy muszę zmienić niektóre ustawienia przed zapisaniem output.png?

PS

I okazało się, że sposób wokół niego, po pierwsze,

set term postscript 
set output "output.ps" 

następnie w linux powłoki,

$ convert output.ps output.jpg 

ten sposób jakiś rozwiązać mój problem.

+0

Czy mógłbyś rozwinąć "nie tak dobrze jak"? Może z zrzutu ekranu w porównaniu z png, które stworzyłeś? – Woltan

+0

przez "nie tak dobre jak", mam na myśli postać z powłoki powłoki jest narysowany na 'wxt', i ma bardzo dobry widok pod względem szerokości linii. Ale liczba w 'output.png' przedstawia inny widok, to znaczy, szerokość linii zmieniła się na gorsze, ale wciąż mogę zrozumieć figurę, ale niewygodna z widokiem. – Alcott

+1

AFAIK każdy terminal w gnuplot wygląda trochę inaczej. Możesz sprawdzić wyjście każdego terminalu za pomocą funkcji gnuplot [test] (http://www.gnuplot.info/docs_4.2/gnuplot.html#x1-34200047). – Woltan

Odpowiedz

72

Źródłem problemów związanych z jakością PNG jest najprawdopodobniej brak wygładzania krawędzi w terminalu png Gnuplot. Ponieważ nie dajesz zrzutów ekranu, nie jestem pewien, co masz na myśli mówiąc o złej szerokości linii, ale oto jak to dla mnie wygląda (na MacOS). Ten zrzut ekranu pokazuje wyjście rodzimej produkcji AQUATERM Gnuplot za:

A plot using gnuplot's native aquaterm output

Jeśli stworzymy PNG korzystając set term png linie stają się "nerwowy" i pixellated:

The sine curve, plotted using the png terminal

jednak istnieje wersja terminalu png, która wykorzystuje biblioteki Kair do renderowania, a to sprawia, że ​​wyjście jest bardziej gładkie i ładniejsze. set term pngcairo daje ten wynik:

The sine curve, plotted using the pngcairo terminal

Można użyć set terminal aby sprawdzić, czy ta wersja terminal jest dostępny dla Ciebie. Jeśli tak, to powinno to zaoszczędzić pracę konwersji, a także dać lepszą jakość obrazu niż JPG (który nie jest idealnym formatem dla grafiki liniowej).

+1

o tym właśnie mówię, dzięki. – Alcott

+4

+1 Dla miłego zgadywania przez jstarek! – Woltan

8

Alternatywnie, jeśli chcesz uzyskać profesjonalną jakość zdjęć (z gotową do publikacji) za pomocą gnuplot, powinieneś obejrzeć terminal epslatex. Używałem go szeroko w mojej pracy dyplomowej i moich pracach z bardzo ładnymi wynikami, praktycznie bez problemów z pikselowaniem, przenośnością podczas konwersji obrazów do formatu PDF i prawie wszystkimi możliwościami Latex.

13

Domyślny rozmiar wygenerowanego przez PNG obrazu gnuplot z terminalem PNG wynosi 640x480 pikseli.Rozdzielczość ta w niektórych przypadkach może skutkować "pikselowymi" wykresami, które nie są tak ładne, jak te generowane na ekranie z domyślnym terminalem (wxt).

może zmieniać rozdzielczość obrazu wyjściowego, używając opcji rozmiar:

set terminal png size <x,y> 

gdzie x i y są pożądane liczba pikseli wzdłuż osi poziomej i pionowej, odpowiednio. Na przykład:

set terminal png size 1024,768 

Należy pamiętać, że obrazy o większej rozdzielczości spowoduje proporcjonalnie większych plików na dysku. Alternatywnie możesz spróbować użyć terminali innych niż raster, takich jak "post eps" lub "pdf", jeśli są dostępne na twoim komputerze, co może zapewnić wysokiej jakości skalowalne i (względnie) przenośne obrazy bez dużego śladu dysku.

+0

Zmienia to także względny rozmiar czcionki - wykres zmienia się, ale etykiety, tytuły itp. Nie. –

1

Komentarz: jako przykładu wykorzystano plik JPEG. Prawdopodobnie nigdy nie powinieneś używać JPEG do wykresów liniowych, chyba że mają zdjęcia jako tło. JPEG nie jest po prostu zaprojektowany do obsługi ostrych krawędzi rysunków liniowych.

Powiązane problemy