Annorlunda visualiseringar
Tree maps
För att skapa en tree map behöver vi först ladda paketet portfolio
samt hämta hem den förändrade treemap
-funktionen via source()
.
require(portfolio)
source("https://raw.githubusercontent.com/canadice/visualization_literature/master/treemapbrewer.r")
Nu har vi skapat och laddat in en ny funktion i R som heter treemap_brewer()
som har följande argument:
id
styr vilken variabel i datamaterialet som används som etikett i varje cell,group
styr vilken variabel som anger vilka/hur många celler som ska skapas,area
styr vilken variabel som bestämmer storleken på cellen,color
styr vilken variabel som bestämmer färgnyansen på cellen,textcol
styr färgen på texten i cellerna,linecol
styr färgen på kantlinjen mellan cellerna,pal
anger enRColorBrewer
palette med färger som används för färgläggning av cellerna,main
styr diagramrubriken.
För att exemplifiera denna diagramtyp kommer iris
-data användas igen. En beskrivning av detta material finns tidigare i kodmanualen. Vi vill nu skapa en tree map där vi vill se samband mellan Sepal.Length
och Petal.Length
för de tre olika arterna (Species
) av blommor. För att kunna skapa detta diagram behöver vi ha en observation per art, så lite databearbetning behöver först göras i antingen Excel eller R.
Vi vill alltså aggregera materialet från det rådata (mikrodata) som anges för varje objekt till gruppvis data (makrodata) för varje art och detta gör vi genom att skapa ett medelvärde per art för de två undersökta variablerna. Vi skulle också kunna tänka oss att vi vill summera de olika arternas mått men i detta material är det nog lämpligare att titta på de genomsnittliga längderna som en egenskap av arten.
Nedanstående kod använder sig utav dplyr
-paketets funktioner för databearbetning som kommer tas upp mycket mer i Programmering i R under vårterminen.
iris_agg <- iris %>% group_by(Species) %>% summarise(sepal_mean = mean(Sepal.Length),
petal_mean = mean(Petal.Length))
kable(iris_agg, format = "html", caption = tables("tab1")) %>%
kable_styling(position = "center", full_width = FALSE)
Species | sepal_mean | petal_mean |
---|---|---|
setosa | 5.006 | 1.462 |
versicolor | 5.936 | 4.260 |
virginica | 6.588 | 5.552 |
Nu har vi datamaterialet enligt det format som behövs för att skapa en tree map, vi har två kontinuerliga variabler samt en kategorisk variabel. Notera att vi i denna funktion måste ange datamaterialet$variabelnamnet för att lägga till variablerna som vi vill använda i funktionen, till skillnad från tidigare använda ggplot2
-funktioner.
treemap_brewer(id = iris_agg$Species,
group = iris_agg$Species,
area = iris_agg$sepal_mean,
color = iris_agg$petal_mean,
textcol = "black",
linecol = "black",
pal = "Oranges",
main = "Tree map över olika arter av blommor")
Tänk på att i figurbeskrivningen ange vilka variabler som styr storleken och färgen i diagrammet!
Parallellkoordinatdiagram
Denna sorts diagram ämnar att identifiera kluster av observationer i ett datamaterial, samt att kunna se korrelationen mellan intilliggande variabler. För att skapa diagrammet används ggparcoord()
ur paketet GGally
som vi tittat på tidigare.
Argumenten som vi är intresserade av är:
data
som anger vilket material som ska visualiseras,col
som anger vilka kolumnindex som ska visualiseras,scale
som alltid ska vara"uniminmax"
för att standardisera y-axeln till samma skalor.
Till detta diagram kan vi använda andra ggplot2
-funktionalitet för text och estetik.
ggparcoord(data = iris,
col = 1:4,
scale = "uniminmax") +
# Lägger till annan estetik likt tidigare diagram
theme_bw() +
theme(axis.title.y =
element_text(angle = 0,
hjust = 1,
vjust = 0.5),
plot.title =
element_text(hjust = 0.5),
plot.subtitle =
element_text(hjust = 0.5),
panel.grid.major.x =
element_line(color = "gray"),
panel.grid.minor.x =
element_line(color = "light gray"),
panel.grid.major.y =
element_line(color = "gray"),
panel.grid.minor.y =
element_line(color = "light gray")) +
labs(title = "",
x = "Variabel",
y = "Värde",
caption = "Källa: Anderson, E - The New S Language (1935)")
Till hjälp med tolkningen av detta diagram rekommenderas att läsa följande länk.