ggplot2-paketti perustuu Leland Wilkinsonin ajatukseen tilastografiikan kieliopista, jonka hän hahmotteli kirjassaan Wilkinson, Leland, ja Graham Wills. 2005. The grammar of graphics. Springer.
Grammar of graphics -ajattelun ytimessä on ajatus siitä, että minkä tahansa graafin voi tehdä samoilla peruselementeillä: tarvitaan data, geometrioita (geoms
) eli datapisteitä merkitseviä visuaalisia elementtejä sekä koordinaattijärjestelmä.
Tärkeintä että data tidy-muodossa! Sitten kaikki on mahdollista!
library(tidyverse)
d <- mtcars
d$model <- row.names(d)
d$brand <- gsub("\\s.+$","",d$model)
d <- as_tibble(d)
# Pisteet geom_point()
# Viivat geom_line()
# Tolpat geom_bar()
# Tilastolliset jakaumaa kuvaavat graafit
## geom_histogram()
## geom_density()
## geom_boxplot()
Factors are used to describe categorical variables with a fixed and known set of levels. You can create factors with the base factor() or readr::parse_factor():
library(forcats)
x1 <- c("Dec", "Apr", "Jan", "Mar")
month_levels <- c(
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
)
factor(x1, month_levels)
readr::parse_factor(x1, month_levels)
The advantage of parse_factor()
is that it will generate a warning if values of x
are not valid levels:
x2 <- c("Dec", "Apr", "Jam", "Mar")
factor(x2, month_levels)
parse_factor(x2, month_levels)
d <- mtcars
d$model <- row.names(d)
d$brand <- gsub("\\s.+$","",d$model)
d <- as_tibble(d)
ggplot(d, aes(x=model,y=mpg,group=brand)) +
geom_point() +
theme(axis.text = element_text(angle=90))
d$model <- fct_inorder(d$model) #
ggplot(d, aes(x=model,y=mpg,group=brand)) +
geom_point() +
theme(axis.text = element_text(angle=90))
d$brand <- fct_infreq(d$brand) #
ggplot(d, aes(x=brand,y=mpg,group=brand)) +
geom_point() +
theme(axis.text = element_text(angle=90))
# relevel
f <- factor(c("a", "b", "c"))
fct_relevel(f)
fct_relevel(f, "c")
fct_relevel(f, "b", "a")
# reverse
fct_rev(f)
# reorder
fct_reorder()
d$model <- fct_reorder(d$model, d$mpg) #
ggplot(d, aes(x=model,y=mpg,group=brand)) +
geom_point() +
theme(axis.text = element_text(angle=90))
The theming system in ggplot2 enables a user to control non-data elements of a ggplot object. It is composed of the following:
# Tapa A
## Käsittele data
d <- mtcars
d$brand <- row.names(d)
d <- as_tibble(d)
## Luo kuvio kerros kerrokselta
p <- ggplot()
p <- p + geom_point(data=d, aes(x=brand,y=mpg))
# Tapa B
d <- readRDS(gzcon(url("http://courses.markuskainu.fi/utur2016/database/malesdata.RDS")))
d %>% group_by(year) %>%
summarise(mdw = median(wage, na.rm=TRUE),
mw = mean(wage, na.rm=TRUE)) %>%
# Kuva alkaa - koska data tulee yo. prosessista, merkitään sitä vain pisteellä (.)
ggplot(., aes(x=year,y=mw)) + geom_point()
Linkkejä ggplot2:n laajennoksia
2016 Markus Kainu.
Tämä teos on lisensoitu Creative Commons Nimeä 4.0 Kansainvälinen -lisenssillä.
Tämä sivusto on tehty R:ssä Rmarkdown-paketin uusimmassa kehitysversion uudella render_site()`
-funktiolla, jonka tekee staattisten responsiivisten verkkosivujen tekemisen helpoksi. Katso ohjeet: