100
pazuRrry
Rysowanie i manipulacja grafiką w R bazuje na koncepcie urządzenia1Ś — ż—<graficznego. Urządzenie graficzne może być skojarzone z oknem graficfcls •"'V nym R Graphics w R GUI. To okno wyświetla zawartość urządzenią-j
W graficznego na ekranie komputera. Możemy funkcją Xll() otworzyć ko.- > lejne urządzenie graficzne i stowarzyszone z nim okno R Graphics.
Również funkcje pngO, bmpO, jpgO, pdf O, postsriptO powodują otwarcie no.i wego urządzenia graficznego, przy czym zawartość tego okna nic jest nigdzie wyświe|p tlana. Nowo otwarte urządzenie graficzne staje się urządzeniem domyślnym i wszystó§ kie instrukcje graficzne od tej chwili będą wykonywane na tym urządzeniu. Funkcją® dev.offO zamyka aktywne urządzenie graficzne i (opcjonalnie) zapisuje zawartośfl urządzenia graficznego na dysku we wskazanym forniacie.
Funkcje umożliwiające otwieranie, zamykanie, czy przełączanie kolejnych urządzefjrci graficznych są przedstawione w tabeli 2.10.
I
§
■/
A
v
Tabela 2.10: Funkcje z pakietu grDemcea do zarządzania urządzeniami graficznymi
dev.cur() |
Wynikiem tej funkcji jest indeks aktualnego j 1 urządzenia graficznego. |
... - - v |
dev. listO |
Wynikiem tej funkcji jest lista indeksów j otwartych urządzeń graficznych. | |
. ................................................ dev.next(which * dev.cur()) |
Uaktywnia kolejne (lub wskazane) urządzenie j graficzne. | |
dev.prev(which * dev.cur()> |
Uaktywnia poprzednie (lub wskazane) urzą- | dzenie graficzne. |
,. '>■] ii |
dev.off(which = dev.cur()) |
Zamyka aktualne (lub wskazane) urządzenie j graficzne. | |
dev.set(which = dev.next()) |
Uaktywnia kolejne lub wskazane urządzenie j graficzne. |
’ |
Sili ■ ■
W pakiecie grDevices dostępne są też funkcje do zapisu grafiki w mniej pó#;S pulamych formatach, np. funkcje xfig(grDevices) (zapisuje rysunek w formacje Ą; xfig) i pictex(grDevices) (zapisuje instrukcje I#I)gX’a generujące dany rysunek),jj|| Jeżeli obrazki przygotowujemy do użycia w M)ęXu, to warto zapisać je przy pomo#Jj§F funkcji pictex(). Jeżeli w trakcie prac nad tekstem zajdzie potrzeba malej modyfi-kacji wykresu, to korzystając z tego formatu można tę modyfikacje wykouać ręcznie :'-|g w pliku tekstowym, bez konieczności generowania ponownie rysunku w R.
I
Wykresy wygenerowane przez te same funkcje R mogą się różnić w za£» tf leżności od urządzenia graficznego, na którym są rysowane i rozdzielczo- j J ści, w której są zapisywane. Przykładowo, niektóre czcionki mogą nje>
8 być dostępne dla formatu pdf, niektóre szerokości linii nie będą dostęp-; ne dla formatów png, jepg, bmp i innych dla grafiki rastrowej (nie będzie możliwej narysowanie linii cieńszej niż jeden punkt, tego ograniczenia nie ma dla formatów# jg wektorowych). Wybór formatu, do którego zapisujemy powinien zależeć od tego, ci? dalej z tym rysunkiem chcemy robić. Do publikacji grafik w Internecie lepiej nadają się formaty rastrowe (jepg, png), jeżeli rysunek chcemy wydrukować lub dołączyć;); do publikacji, to lepszy efekt otrzymamy stosując formaty wektorowe (pdf, ps).
Hf
Operacje wejścia/wyjściu (zapisywanie i odczytywanie danych)
101
^Hmjltywać i zapisywać dane możemy nie tylko z plików z danymi w postaci ta-j. .jjgjatycznej, ale również z dowolnych plików tekstowych. Poniżej przedstawimy me-BHSjpzin odczytywania i zapisywania plików za pomocą połączeń. Jest to niskopo-zjomowy sposób odczytywania plików, podobny do sposobu korzystania z plików • w typowych niskopoziornowych językach programowania, y,;- Interakcja z plikiem składa się z trzech etapów:
1. Otwarcie połączenia z plikiem. Lista funkcji, które otwierają połączenia znajduje się w tabeli 2.11. Wszystkie te funkcje wymagają podania przynajmniej dwóch argumentów, description z opisem połączenia (ścieżka do pliku, nazwa gniazda itp), oraz open określający w jakim trybie otwierane jest połączenie. Tryby "r", “rt", "rb" to tryby czytania (w tym tekstowego i binarnego), "w", "wt", "wb", to tryby zapisywania do połączenia (odpowiednio tekstowego i binarnego), "a", "at", "ab", to tryby dopisywania do połączenia (do końca pliku), "r+", "r+b", "w+", "w+b“, "a+", “a+b", to tryby mieszane do zapisywania i odczytywania.
2. Interakcja z połączeniem. Lista funkcji, które pozwalają na czytanie lub zapisywanie do połączenia znajduje się w tabeli 2.11.
3. Zamknięcie połączenia funkcją close(base).
Na poniższym przykładzie prześledźmy wykorzystanie połączeń do parsowania strony internetowej.
> # odczytujemy Źródło HTML strony internetowej z informacjami o
pracownikach
> 'tf IMPANu, do otwarcia połączenia wykorzystujemy funkcją url()
> pęlaczenie = url("http://www.impan.gov.pl/pracocmicy.html”, open="r")
> # odczytujemy całą zawartość tej strony >. ząwartoscUrla - readLines(połączenie)
> t zamykamy połączenie ; >; cłose (połączenie)
> * teraz parsujemy odczytane informacje,
> # wybieramy te linie, w których znajdują się informacje o pracownikach
> osoby <* zawarto8cUrla[grep("<li class=\"staf f\">", zawartoscUrla)]
> # z tych linii zapisanych w HTML wyciągamy dane pracowników pracownicy = sapply(strsplit(osoby, "</?strong>"), function(x) x[2])
> tt wyświetlamy 6 pierwszych nazwisk
> head(pracownicy)
TU "prof dr hab. Zofia Adamowicz" "dr hab. Kazimierz Alster"
.T3) "dr Wirold Bednorz" "dr Marek Beśka"
[5i “dr Przemysław Biecek" "dr hab. Adam Bobrowski"
Do wyświetlania zawartości plików lub stron internetowych możemy też wykorzystać polecenia url.show(utils) i f ile.show(utils). Wyświetlają one wskazane pliku w oknie R edytora. Korzystając z funkcji download.file(utils) możemy ż poziomu R ściągnąć wskazany plik z Internetu na dysk lokalny.