Ta strona wykorzystuje ciasteczka ("cookies") w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Czy wyrażasz na to zgodę?

Czytaj więcej
< All Topics
Print

Zapisywanie wykonanego wykresu

Metody zapisu wykresu

Zapis wykonanego wykresu w R jest pozornie bajecznie prosty i nie wymaga wyjaśnień. Kiedy uaktywnimy wykres (co można rozpoznać po ciemniejszym niebieskim obramowaniu) można go skopiować do pamięci (Ctrl+C) i wywołać w dowolnym programie graficznym. Przenosi się jako bipmapa. Dopiero przy bardzo dużym powiększeniu wykresu widać, że nie jest ona wysokiej jakości. Znacznie lepiej jest kliknąć na “Plik” i wybrać z menu “Zapisz jako”.

Pojawia się 7 podstawowych formatów zapisu plików graficznych rozpoznawalnych przez większość popularnych programów. Różnią się one rozmiarem tworzonego pliku. Można to prześledzić zapamiętując w różnych formatach ten sam wykres: plot(1:10) bez dodatkowych opcji.

Format
Rozmiar w bajtach
Metafile
16 384
Postscript
3 962
PDF
1 765
Png
3 341
Bmp
451 990
TIFF
1 352 876
Jpeg (100%)
27 481

Ze względu na to, że jakość obrazu cyfrowego zależy od liczby pikseli opisanych w pliku, można się spodziewać zależności: im większy rozmiar tym większa jakość. Nie do końca jest to prawda. Wynika to z różnego przeznaczenia plików graficznych i różnego sposobu programowania przez nie cyfrowego obrazu.

Format metafile a właściwie windows metafile zawiera instrukcje dla systemu operacyjnego o tym, jak wyświetlać grafikę wektorową i rastrową. Zawiera te same informacje, co bipmapa, ma tę samą jakość, ale mniejszy rozmiar.

Format postscript to jedyny format w R pozwalający zapamiętać wykres w grafice wektorowej. Oznacza to, że wszystkie elementy wykresu zapamiętywane są w postaci wzorów matematycznych i odtwarzane z taką samą jakością przy dowolnym powiększaniu wykresu. Często jest to format o który proszą wydawnictwa naukowe i będzie jeszcze o nim mowa w dalszych podrozdziałach. Generalnie format ten tworzy wykresy najwyższej jakości, zwłaszcza gdy są one zmniejszane, powiększane i wyświetlane na różnych komputerach.

Format PDF powstał głównie po to by można było oglądać i czytać pliki o tym formacie w różnych systemach operacyjnych. Rozpowszechnione bezpłatne oprogramowanie firmy Adobe przeznaczone do czytania tych plików spowodowało, że jest to najbezpieczniejszy format do zapamiętywania gotowych prac tekstowo-graficznych, gdy mają być one odtwarzane na różnych komputerach. W mniejszym stopniu zwraca się w nim uwagę na jakość wykresów, ale w ostatnich wersjach Adobe-Akrobat jest ona całkiem wysoka.

Png jest formatem plików graficznych, w którym elementy obrazu zapisywane są rastrowo i stosowana jest ich bezstratna kompresja. Nadaje się bardzo dobrze do zapamiętywania wykresów, gdyż nie wprowadza cieniowań prostych i punktów. Ponadto pliki te nie są duże i nie zwiększają zanadto rozmiarów prac dyplomowych po ich skopiowaniu.

Bmp jest formatem obrazów utworzonych przez stosunkowo prosty program, który poszczególnym pikselom (współrzędnym punktów na ekranie) przyporządkowuje odpowiedni kolor. Ma dobrą jakość dla wykresów o końcowym formacie. Przy konieczności powiększania, a także zmniejszania obrazu jego jakość szybko maleje. Ma na ogół duży rozmiar i wszelkie kompresje bezstratne niewiele go zmniejszają.

TIFF to bardzo rozbudowany format plików graficznych rastrowych przechowujący informacje o kanałach alfa, ścieżkach, profilu kolorów, komentarzach. Jedyny format rastrowy, który może być zamieniany na wektorowy przez odpowiednie programy postscriptowe. Dobrze sprawdza się to tylko na wykresach. Często taki format wykresów jest wymagany przez wydawnictwa naukowe.

Jpeg jest zarówno formatem plików rastrowych jak i algorytmem kompresji obrazów cyfrowych do plików graficznych mających mniejszy rozmiar niż pliki pierwotne. Stosowany jest głównie do zdjęć i rysunków, w mniejszym stopniu do wykresów, gdyż kompresja punktów i linii prostych rozmywa je nieco i daje wyrażny cień. Ma jednak możliwość określania jakości tej kompresji i w tym wypadku zasada: “większa jakość – większy rozmiar”, sprawdza się.

Na dzień dzisiejszy najlepiej sprawdzają się wykresy o formacie png, gdy chcemy je skopiować do pracy dyplomowej.

 

Zapis wykresu w formacie postscript

 

Wydawnictwa naukowych po przyjęciu pracy do druku życzą sobie dobrej jakości zdjęć i wykresów umieszczanych w tej pracy. Wykaz możliwych formatów elementów graficznych można znaleźć na stronach internetowych tych wydawnictw. Wśród możliwych formatów wykresów zawsze pojawia się format Encapsulated PostScript czyli pliki postscript z rozszerzeniem .ps lub częściej .eps. W żargonie wydawniczym wykresy te nazywa się EPSami.

Zapis wykresu w formacie postscript to własnie zrobienie EPSu. Wykres taki ma rozszerzenie .eps, nie można go zobaczyć poprzez uruchomienie popularnych plików graficznych takich jak IrfanView, Photoshop, Gimp lub systemowych plików do oglądania zdjęć. Dopiero programy czytające grafikę wektorową (najpopularniejszy z nich to Incscape i Latex z biblioteką epstopdf) otwierają je w prawidłowo.

Zapis wykresu w formacie EPS poprzez wybranie postscript w menu “Zapisz jako”, ma jednak pewne ograniczenia. Na przykład elementy tekstu przekształcone funkcją expression() (patrz: rozdział 8) nie zawsze są prawidłowo przekształcane do języka postscript.

windows(4.5, 2.5)
par(mar=c(3.4,3.4,1.5,0.5),mgp=c(1.7,0.5,0), tck=-0.03)
plot(1:10,type="n",
xlab=expression(alpha*beta*gamma*delta*epsilon*zeta*theta*iota*kappa*lambda*mu*
    nu*xi*pi*rho*sigma*tau*upsilon*phi*chi*psi*omega),
main=expression(Alpha*Beta*Gamma*Delta*Epsilon*Zeta*Theta*Iota*Kappa*Lambda*Mu*
    Nu*Xi*Pi*Rho*Sigma*Tau*Upsilon*Phi*Chi*Psi*Omega),
ylab=expression("objętość komórki [ "*mu*m^3*" ]"))
text(1, 7, expression(bar(x)*" = "*frac(1, n)*sum(x[i], i==1, n)), cex=1.4, 
    adj=0)
text(5, 4, expression(paste(frac(1, sigma*sqrt(2*pi))*" "*
plain(e)^{frac(-(x-mu)^2, 2*sigma^2)})), cex=1.4, adj=0)

Powyższy kod daje wykres, którego format png widoczny jest z lewej, a postscript otwarty przez Latex w środku i Inkscape z prawej. Oba wykresy poscriptowe są tu pokazane po exporcie do formatu png, co pogarsza ich jakość, ale nie zmienia tego co jest widoczne w redakcjach: braku niektórych polskich liter. Z kolei Inkscape nie czyta litery μ.

     

Trzeba przyznać, że z każdą nową wersją R, coraz lepiej przekształcany jest format matematyczny tworzony w R na język postscriptowy. Nadal jednak mogą pojawić się istotne błędy.

Język postscript posiada kilka własnych krojów czcionek nie do końca zgodnych z czcionkami systemowymi. Dlatego też każdy krój czcionki wybrany z systemu do zrobienia wykresu w R powoduje, że zapis takiego pliku jako typ poscript generuje błąd i albo tworzy pusty rysunek albo zawiesza się. Można to sprawdzić używając programu:

windowsFonts(Arial = windowsFont("Arial"),
times = windowsFont("Times New Roman"),
Symbol = windowsFont("Symbol"))
#
windows(4.5, 2.5)
par(mar=c(1,1,1,1), ps=20, bg="yellow")
plot(1:10, type="n", axes=FALSE, xlab="", ylab="")
par(family="times")
text(1,7, "Źrebak złamał kość", adj=0)
par(family="Arial")
text(8,7, "Times New Roman", adj=0, cex=0.5)
par(family="Symbol")
text(1,4,"abcdefghijklmnoprstuvwxyz", adj=0)
par(family="Arial")
text(8,4, "Symbol", adj=0, cex=0.5)

W następnym podrozdziale powiemy jak mają postępować osoby, które spotkały się w wymogami redakcyjnymi typu:
1. Typ czcionki: Times New Roman
2. Format wykresów: Wyłącznie poscript (lub wyłącznie eps)

 

Tworzenie wykresu za pomocą funkcji postscript()

Zapisywanie wykresu w formacie postscript przy użyciu menu R to nie jedyny sposób na wykonanie EPSu. Można to samo, lub prawie to samo zrobić używając funkcji postscript(). Ponieważ nasz wykres będzie wtedy składał się wyłącznie z poleceń postscriptowych, musimy zapomnieć w nim o używaniu czcionek i innych elementów systemowych właściwych dla naszego komputera. Nie można wtedy też użyć funkcji windows() na określnie wymiarów wykresu. Określa się je opcjami width=n1, height=n2 funkcji postscript(). Wśród opcji tej funkcji jest encoding, za pomocą której można określić strony kodowe dla znaków narodowych. Dla polskich znaków jest to “ISOLatin2.enc”.

postscript("d:Fig11c.eps", width=4.5, height=2.5, encoding="ISOLatin2.enc")
par(mar=c(1,1,1,1))
plot(1:10, type="n", xlab="", ylab="")
text(1,9, "Źrebak złamał kość, bo lękał się bąka", col="red", adj=0)
text(1,7, "ŹREBAK ZŁAMAŁ KOŚĆ, BO LĘKAŁ SIĘ BĄKA", col="red", adj=0)
text(1,4, expression(alpha*beta*gamma*delta*epsilon*zeta*theta*iota*kappa*lambda*
    mu*nu*xi*pi*rho*sigma*tau*upsilon*phi*chi*psi*omega), col="blue", adj=0)
dev.off()

 

Powstaje na dysku D: (o ile ktoś ma taki dysk lub partycję) plik eps, który otworzony poprzez Latex i Inkscape wygląda następująco:

  

Najwyraźniej niemożność odczytania postscriptowego μ jest wadą Inscape’a, nie programu R. Oglądanie EPSów w Latexu przed wysłaniem ich do redakcji jest standardem. Właśnie za pomocą programu zgodnego z Latexem redakcja będzie przygotowywała artykuł do druku. Polskie oraz greckie litery są wyświetlane prawidłowo. Czcionka której domyślnie używa funkcja postcript nosi nazwę helvetica i prawie nie różni się od czcionki systemowej arial.

Zmianę domyślnej czcionki umożliwia opcja family funkcji postscript(). Najpopularniejwsze, zaimplementowane do większości sprzętu drukującego prace, noszą nazwy “AvantGarde”, “Bookman”, “Courier”, “Helvetica”, “Helvetica-Narrow”, “NewCenturySchoolbook”, “Palatino” or “Times”. Modyfikacje tych krojów (pogrubienie, pochylenie) uzyskamy za pomocą opcji font mogącą przyjmować wartości od 1 do 5.

postscript("d:Fig11d.eps", width=4.5, height=2.5,
     encoding="ISOLatin2.enc", family="AvantGarde")
par(mar=c(1,1,1,1))
plot(1:10, type="n", xlab="", ylab="")
text(5.3,9, "AvantGarde", adj=0.5)
par(font=1)
text(1,8, "Ala ma kota, a źrebak złamał kość", adj=0)
par(font=2)
text(1,7, "Ala ma kota, a żebrak złamał kość", adj=0)
par(font=3)
text(1,6, "Ala ma kota, a źrebak złamał kość", adj=0)
par(font=4)
text(1,5, "Ala ma kota, a żebrak złamał kość", adj=0)
par(font=5)
text(1,4, "Ala ma kota, a źrebak złamał kość", adj=0)
dev.off()

 

Po zmianie nazwy kroju czcionki w funkcji postscript() i pierwszej funkcji text() na kolejne popularne czcionki postscriptowe (poza domyślną Helvetica) uzyskano następujące wykresy (kopie tego co pokazał program Latex zapamiętane w formacie png):

               

Widać, że opcja font=5 umożliwia wstawianie greckich liter do tekstu. Ponadto wszystkie popularne czcionki dobrze odczytują znaki strony kodowej “ISOLatin2.enc” co umożliwia używanie polskich liter.

Czcionka “Times” jest zgodna z często zalecanym przez redakcje formatem czcionki stosowanej w artykułach, gdyż przy stosunkowo dobrej czytelności tworzy ona najbardziej ściśnięte teksty zajmujące najmniej miejsca. Powyższe przykłady pokazują, jak ją zastosować w EPSach wysyłanych później do redakcji.

 

Spis treści