Rachunek Prawdopodobieństwa i Statystyka lab 4. Kaja Gutowska (Kaja.Gutowska@cs.put.poznan.pl) 1. Wprowadzenie do grafiki: - Program R ma szerokie możliwości w zakresie graficznego prezentowania danych. - Funkcja plot() pozwala na rysowanie wykresów i jest to jedna z podstawowych funkcji do graficznego przedstawiania danych. - Funkcja text() wykorzystywana do wprowadzania napisów na wykres. Jako argumenty przyjmuje współrzędne punktu i napis. - Funkcja curve() do rysowania funkcji matematycznych. - Warto poznać pakiet ggplot. - Funkcja abline() dorysowanie linii prostej jako argumenty współczynnika równania prostej. Przykład 1 - funkcja plot(): - Na początku przygotowuje się siatkę punktów, dokładniej wektor z konkretnym przedziałem. - Następnie rysuje się na niej wartości np. funkcji sin(x). Wywołuje funkcję plot(), która przygotowuje okno graficzne. Typ b (both) oznacza narysuj punkty i połącz je linią, typ l (line) oznacza narysuj linie, col oznacza kolor linii, main pozwala na wprowadzenie tytułu wykresu. - Następnie można dorysować wartości innej funkcji np. cos(x). > x <-seq(-2*pi, 2*pi, by=0.5) > plot(x, sin(x), type="b",main="wykres funkcji sin(x) i cos(x)", col="blue") > lines(x, cos(x), type="l",col="red") Przykład 2 - funkcja curve(): - Ta funkcja umożliwia rysowanie funkcji matematycznych. - Pierwszym argumentem jest funkcja lub wyrażenie w którym znajduje się zmienna x. - Wynikiem funkcji jest wykres funkcji lub wykres wyrażenia określonego w pierwszym argumencie, w przedziałach określonych przez kolejne argumenty. > curve(sin, from = -2*pi, to = 2*pi) Przykład 3 - funkcja abline(): - Funkcja ta umożliwia dorysowanie linii prostej jako argumenty współczynnika równania prostej (y = ax + b) - Funkcja ta dorysowuje linię, a nie tak jak plot() tworzy nowy wykres. Przed jej wywołaniem należy zapewnić okno graficzne. Otwieranie okna graficznego BEZ tworzenia wykresu, jest możliwe dzięki argumentowi type= n funkcji plot() - Linia pozioma - argument jest h - Linia pionowa - argumentem jest v - Argumenty funkcji abline() są takie same jak w przypadku funkcji plot(), np. lty odpowiada za styl linii, lwd odpowiada za grubość linii itd. > plot(0, xlim=c(-2,2), ylim=c(-2,2), type= n, xlab=, ylab=, main="funkcja abline()")
> abline(0, 0) #prosta określona przez równanie prostej > for (i in 1:10) abline(0, i) > abline(h=-1, lwd=3, col="red") #linia pozioma > text( 1.7,-0.8, "h = -1") #Funkcja text() służy do umieszczania napisów na wykresach, argumentami tej funkcji poza tekstem są współrzędne punktu, w którym będzie znajdować się określony w cudzysłowie tekst text. Przykład załadowania pliku.csv: - Pobierz plik ze strony: http://www.cs.put.poznan.pl/kgutowska/rpis/dane/dane.csv - Wczytaj pobrane dane (podaj właściwą ścieżkę do pliku): > data <- read.csv(file="c:/users/...") - Drugi sposób, załaduj plik bezpośrednio ze strony: > data <- read.csv("http://www.cs.put.poznan.pl/kgutowska/rpis/dane/dane.csv") 2 Wykres Paskowy: - Wykres paskowy, zwany również jednowymiarowym wykresem rozrzutu, można narysować wykorzystując funkcję stripchart(graphics) - Funkcja stripchart() jako pierwszy argument przyjmuje wektor liczb (który chcemy wizualizować), a jako drugi argument method - pozwala wybrać metodę postępowania z wartościami powtarzającymi się. - Argument method i jego schematy postępowania: - method = stack - powtarzające się wartości są rysowane w słupkach, - method = overplot - powtarzające się wartości są nadpisywane, #chcąc skorzystać z załadowanych danych, trzeba udostępnić nazwy kolumn używając attach > attach(data) > stripchart(cisnienie.skurczowe, method="stack") > stripchart(cisnienie.skurczowe, method="overplot") 3 Histogram dwuwymiarowy: - Funkcja hist2d(gplots) rysuje dwuwymiarowy histogram. - Wynikiem tej funkcji jest macierz z wyznaczonymi licznościami w odpowiednich przedziałach zmienności obu zmiennych. - argument nbins określa na ile elementów ma zostać podzielona oś. > install.packages("gplots") > library("gplots") > hist2d(cisnienie.skurczowe, cisnienie.rozkurczowe, nbins=c(10,10))
3 Róża wiatrów: - Funkcja rose.diag(circular) rysuje odpowiednik dla histogramu o charakterze kątowym. - Argumenty dodatkowe tej funkcji są podobne jak dla funkcji hist(). - Zapoznaj się z pakietem circular, który można wykorzystać do analizy danych o charakterze kątowym. #na potrzeby przykładu, generujemy dane losowe. > circ <- circular(rbeta(100, 2, 5)*2*pi) > rose.diag(circ, bins = 15, main = "tytul", prop = 2) 4 Wykres słonecznikowy: -Wykres służący do wyświetlania danych, które mogą się na siebie nakładać. > zmienna1 = rbinom(200,5,0.5) > zmienna2 = rbinom(200,5,0.5) > sunflowerplot(zmienna1, zmienna2) 5 Wykres kołowy: - Funkcja pie(graphics) służy do rysowania wykresów kołowych. - Pierwszym argumentem jest wektorem liczb. Drugim argumentem może być wektor etykiet, które mają pojawić się na wykresie. Pozostałe argumenty służą manipulowaniu kolorami, etykietami, kolorami etykiet itd. #wykorzystujemy poprzednio załadowane dane.csv > wyksztalcenie = summary(wyksztalcenie) > pie(wyksztalcenie) > procenty = format(100*wyksztalcenie/sum(wyksztalcenie), digits =2) #Przetestuj wywołanie funkcji pie() z różnymi argumentami > pie(wyksztalcenie, lty=0, labels = paste(names(wyksztalcenie), procenty, "%"), col=heat.colors(4), init.angle = 180) 6 Wykres słupkowy: - Funkcja barplot() służy do rysowania wykresów słupkowych w poziomie lub w pionie. #załadować dane2 > dane <- read.csv("http://www.cs.put.poznan.pl/kgutowska/rpis/dane/dane2.csv") #konkretne dane (konkretna kolumna: gender) wyciągamy za pomocą operatora $ > tab <- table(dane$gender) #rysujemy dane z kolumny gender
> barplot(tab, names.arg=rownames(tab), col=c("red","green"), ylab="liczb Pacjentów") Przykład2 dla dwóch zmiennych: > tab1 <- with(dane,table(gender,location)) >barplot(tab1, beside=true, ylim=c(0,150), col=c("red","green"), ylab="liczba pacjentów") 7 Wykres kropkowy: - Wykres działający na podobnej zasadzie co barplot(), ale z innym sposobem wyświetlania danych. #wykorzystując wcześniej załadowane dane > tab2 <- with(data,table(wyksztalcenie,plec)) > dotchart(tab2) > tab3 <- with(data,table(plec,wyksztalcenie)) > dotchart(tab3) > dotchart(tab3, pch=19, gpch=5, color="orange", gcolor="blue", lcolor="green", lwd=3) 8 Wykres torbowy: - Funkcja bagplot(aplpack) jest uogólnieniem funkcji boxplot dla dwóch zmiennych. - wyznaczana jest również dwuwymiarowa mediana #zainstaluj pakiet i dodaj bibliotekę aplpack > bagplot(cisnienie.skurczowe, cisnienie.rozkurczowe, xlab="cisnienie skurczowe", ylab="cisnienie rozkurczowe", cex=0.9) 10 Inne wykresy: - Wykresy rozrzutu (wykresy xy) rysują funkcje: pairs(), gpairs(), scatterplot.matrix(). - Trójwymiarowe wykresy rozrzutu rysuje funkcja: scatterplot3d() - Wykres otoczkowy chplot() 11 ważne pakiety: - plotrix: m.in. do rysowania wykresu Gantta. - ggplot: m.in. do rysowania wykresów wielowymiarowych (prefix gg pochodzi od tytułu książki Grammar of Graphics). - ggplot2: rozbudowany pakietu ggplot. - lattice - grid Poza pakietami warto wiedzieć, że istnieje funkcja legend(), która jak nazwa wskazuje pozwala na wyświetlanie legendy dla wykresu.
> legend("topright", c(expression(x), expression(x^2)), fill=c("red","green"), ncol=2, title="legenda") Zadanie: Zadania pod koniec zajęć prześlij na maila (Kaja.Gutowska@cs.put.poznan.pl) sprawozdanie z wykresami i opisami w wersji.pdf, skrypt.r oraz plik.csv. Proszę nadać tytuł maila zgodnie z opisem: RPiS_Imię_Nazwisko_lab4 1. Utwórz własne dane w pliku.csv lub wygeneruj dane losowo lub wykorzystaj inne dane do stworzenia ciekawych wizualizacji danych. Proszę wykazać się kreatywnością i wysiłkiem i nie robić bezmyślnie copy & paste z protokołu. Dodaj krótki opis jakimi danymi dysponujesz, dodaj opisy do wykresów, m.in. jakie przedstawia dane i co z tego wykresu wynika, czy są widoczne jakieś zależności?