1 Datan visualisointi ggplot2-paketilla

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ä.

1.1 Perusteet

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()

1.3 Faktorit

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))

1.4 theme

The theming system in ggplot2 enables a user to control non-data elements of a ggplot object. It is composed of the following:

  • theme elements, which refer to individual attributes of a graphic that are independent of the data, such as font size, axis ticks, appearance of grid lines or background color of a legend;
  • theme element functions, which enables you to modify the settings of certain theme elements;
  • theme functions, which define the settings of a collection of theme elements for the purpose of creating a specific style of graphics production;
  • the theme() function, used to locally modify one or more theme elements in a specific ggplot object.

1.5 Hyviä tapoja kirjoittaa kuvien koodia

# 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()

1.6 Skaalat

1.8 Lisäteemat ja ggplot2-paketin laajentaminen

Linkkejä ggplot2:n laajennoksia

  • ggthemes - plot style themes
  • ggmap - maps with Google Maps, Open Street Maps, etc.
  • ggiraph - interactive ggplots
  • ggstance - horizontal versions of common plots
  • GGally - scatterplot matrices
  • ggalt - additional coordinate systems, geoms, etc.
  • ggforce - additional geoms, etc.
  • ggrepel - prevent plot labels from overlapping
  • ggraph - graphs, networks, trees and more
  • ggpmisc - photo-biology related extensions
  • geomnet - network visualization
  • ggExtra - marginal histograms for a plot
  • gganimate - animations
  • plotROC - interactive ROC plots
  • ggspectra - tools for plotting light spectra
  • ggnetwork - geoms to plot networks
  • ggtech - style themes for plots
  • ggradar - radar charts
  • ggTimeSeries - time series visualizations
  • ggtree - tree visualizations
  • ggseas - seasonal adjustment tools

2 Datan mallintaminen ja mallien hallinta


2016 Markus Kainu.

Creative Commons -lisenssi
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: