Cvičenie 4 - Vizualizácia dát, práca s knižnicou ggplot2
Cieľom štvrtého cvičenia je naučiť sa základné možnosti vizuálizácia dát a používať knižnicou ggplot2, ktorá poskytuje platformu na vytváranie jednoduchých grafov poskytujúcixh množstvo informácií.
Na začiatok si ukážeme základné možnosti vizualízácie dát.
Prieskum dát
Po načítaní údajov do pracovného priestoru je čas ich preskúmať a získať predstavu o ich štruktúre:
download.file("http://people.tuke.sk/peter.butka/res/avgpm25.csv","DATA/avgpm25.csv")
pollution = read.csv("DATA/avgpm25.csv", colClasses = c("numeric", "character","factor", "numeric", "numeric"))
head(pollution)
tail(pollution,7)
summary(pollution)
str(pollution)
Základné grafy
Graphics je vstavaným balíkom R a využíva sa na vykresľovanie base grafov.
Pozrime sa na použitie základných grafov:
# Zoznam všetkých funkcií získate zadaním:
library(help = "graphics")
# Nápovedu k funkciám si vieme zobraziť aj použitím funkcie help()
help(hist)
# 1. histogram
hist(pollution$pm25, col = "green") # histogram pm25, zelená farba
rug(pollution$pm25) # "koberec" :)
abline(v = 12, lwd = 2) # pridanie čiary vertikálne na čislo 12, hrúbka 2
abline(h=50) # pridanie čiary horizontalne na čislo 50
# 2. barplot
barplot(table(pollution$region), col = "wheat", main = "Nadpis") # BARPLOT, pre stlpec region, s danou farbou a nadpisom
Boxplot
# 3. boxplot
boxplot(pollution$pm25, col = "blue") # boxplot atribútu pm25, farba modrá
boxplot(pm25 ~ region, data = pollution, col = "red") # boxplot pre 2 atribúty
# or
boxplot(pollution$pm25 ~ pollution$region, col = "red")
# 4.scatterplot
# scatterplot (bodový graf) z dát pollution, pre latitude a pm25 a rozdelenie regionov podla farieb
with(pollution, plot(latitude, pm25, col = region))
# legenda, vpravo hore, názvy legendy su levels v regione, farby, typ oznacenia
legend(x="topright", legend = levels(pollution$region), col=c("red","black"),pch=1)
Knižnica ggplot2
Balík ggplot2 je róbustný a všestraný balík, ktorý vyvinul Hadley Wickham na vytváranie estetických grafov a máp. V tejto časti sa pozrieme na niekoľko
príkladov a tipov ako používať balík ggplot2 na vizualizáciu dát.
Ggplot2 vytvára akúsi "gramatiku", pomocou ktorej vieme zápis rozdeliť do troch základných častí:
plot = data + aesthetics + geometry
- data: dataset (datový rámec)
- aesthetics: označuje premenné x a y a zároveň definuje ich vlastnosti (farba, veľkosť, tvar bodov atď)
- geometry: označuje TYP grafiky, t.j. či ide o stĺpcový graf, histogram, boxplot atď.
K tejto základnej gramatike môžeme pridávať, ďalšie prvky ako popis osí, nadpis grafu, legendu, zmenu témy a mnoho iného. V nasledujúucich úlohach si ukážeme niektoré z nich.
plot = ggplot(data, aes()) + geometry + ...
V nasledujúcich úlohách budeme používať 2 datasety dostupné v R:
- iris: 50 pozorovaní, 5 premenných
- Titanic: 32 pozorovaní, 5 premenných
--- >
< ---
# Pre inštaláciu balíka zadajte
install.packages("ggplot2")
# a načítajte knižnicu pomocou nasledujúceho príkazu:
library(ggplot2)
Histogram
ggplot(data = iris, aes(x = Sepal.Length)) +
geom_histogram()
# aes definuje ktora premenna bude na osi x
# geom_histogram() oznacuje ze chceme vykreslit histogram
ggplot(iris, aes(x = Sepal.Length)) +
geom_histogram(color = "black", fill = "white", bins = 10 )
ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_histogram(bins = 10)
# Nainštalujte si balíček gridExtra a načítajte knižnicu gridExtra.
install.packages("gridExtra")
library(gridExtra)
g1 = ggplot(iris, aes(x=Petal.Length, fill=Species)) +
geom_histogram(bins = 10)
g2 = ggplot(iris, aes(x=Petal.Width, fill=Species)) +
geom_histogram(bins = 10)
g3 = ggplot(iris, aes(x=Sepal.Length, fill=Species)) +
geom_histogram(bins = 10)
g4 = ggplot(iris, aes(x=Sepal.Width, fill=Species)) +
geom_histogram(bins = 10)
grid.arrange(g1, g2, g3, g4, nrow = 2)
Barplot
# Načítajte si dataset Titanic
titanic = data.frame(Titanic)
ggplot(titanic[titanic$Survived=="Yes",], aes(x=Class, y=Freq)) +
geom_bar(stat="identity")
ggplot(titanic, aes(x=Class, y=Freq, fill=Survived)) +
geom_bar(stat="identity")
ggplot(titanic, aes(x=Sex, y=Freq, fill=Survived)) +
geom_bar(stat="identity") +
facet_grid(~Class)
Boxplot
ggplot(iris, aes(x=Species, y=Petal.Length)) +
geom_boxplot() +
coord_flip()
Scatterplot
ggplot(iris, aes( x = Sepal.Length, y = Sepal.Width, shape= Species))+
geom_point()
ggplot(iris, aes( x = Sepal.Length, y = Sepal.Width, shape = Species, color = Species)) +
geom_point() +
ggtitle("Iris Sepal Size Analysis\nData Source: Anderson (1935)") +
xlab("Sepal Length (cm)") +
ylab("Sepal Width (cm)")
# faceting
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point() +
facet_wrap(~Species)
Úlohy
Úloha 4.1
Vytvorte boxplot pomocou systému vykresľovania Base. Použite dáta z datasetu s názvom CO2. Uložte dáta CO2 do premennej s názvom CO2. Boxplot bude znázorňovať závislosť premennej uptake ku premennej Type. Nastavte farbu boxplotu na zelenú a pridajte taktiež nadpis grafu a popis osí x a y. Na záver pridajte do grafu horizontálnu hrubú čiaru s veľkosťou 4 na hodnote 25, ktorá bude prerušovaná a červená.
Úloha 4.2
Vytvorte bodobý graf pomocou knižnice ggplot2. Použite dáta z datasetu s názvom mtcars. Bodový graf bude znázorňovať závislosť počtu najazdených kilometrov (mpg) ku objemu motora (disp) pre autá s manuálnou prevodovkou - (podmnožinu am==0). Farbu bodov zvolťe podľa počtu valcov (cyl). Pridajte nadpis Scatter plot, os x premenujte naMileage, os y na Displacement. Nastavte tému na minimálnu.
Úlohy na precvičenie
Úloha 4.3
Načítajte si dáta mtcars. Pomocou systému Base vykreslite stĺpcový graf zobrazujúci početnosti áut pre jednotlivé typy motorov - počet válcov cyl. Jednotlivé stĺpce farebne odlíšte. Pridajte nadpis grafu Počet áut pre jednotlivé typy motorov. Pridajte horizontálnu čiaru na hodnote 8, so šírkou čiary 2 a čiernou farbou.
Úloha 4.4
Načítajte si dáta mtcars. Pomocou systému Base vykreslite boxplot grafy pre spotrebu auta Base pre rôzny počet prevodových stupňov gear. Pridajte nadpis grafu a zmeňte farby jednotlivých boxplotov.
Úloha 4.5
Načítajte si dáta mtcars. Pomocou knižnice ggplot2 vykreslite histogram pre výkon áut - atribút hp, rozdeľte na 10 stĺpcov a nastavte výplň podľa počtu válcov cyl. Pridajte nadpis grafu a zmeňte farby jednotlivých boxplotov.
Úloha 4.5
Načítajte si dáta mtcars. Pomocou knižnice ggplot2 riešte úlohu 4.4.