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.