Gå till index

Analys med R

0% färdig
0/0 Steps
  1. Analys och forskning med R och Posit (Rstudio)
  2. Grunderna i R och Rstudio
    7 Ämnen
  3. Importera, exportera, spara och ladda data
    5 Ämnen
  4. Strängar och regular expressions (regex)
    1 Ämne
  5. Bearbetning av data med dplyr
    12 Ämnen
  6. Visualisera och presentera
    14 Ämnen
  7. Explorerande analyser
    6 Ämnen
  8. Prediktionsmodeller
    12 Ämnen
  9. Klassisk regressionsanalys
    8 Ämnen
  10. Machine learning (ML) och Artificiell Intelligens (AI)
    9 Ämnen
  11. Prediktionsmodeller: Tidymodels
  12. Hypotestester
    1 Ämne
Avsnitt 6, Ämne 12
Startad

Tema (themes)

Avsnitt Progress
0% färdig

För att justera tema och layout finns funktionen theme(), vilken har en lång rad argument som kan specificeras för att påverka i princip alla aspekter av layout och tema. Det finns dessutom färdiga teman, som exempelvis theme_bw(), vilka ger grafen en särskild stil. Att använda ett färdigt tema (exempelvis theme_bw()) innebär som regel att färre justeringar behöver göras manuellt.

Att justera temat är inte nödvändigt för exploration av data. Det bör däremot göras vid presentation för att optimera det slutgiltiga resultatet. De flesta yrkesutövare arbetar med ett fåtal olika typer av visualiseringar och därför kan man med fördel investera tid i att utveckla passande teman.

I detta kapitel arbetar vi med data från gapminder, som finns i paketet med samma namn. Ladda gapminder med följande kod:

R
library(gapminder)

# Inspektera första 5 rader
head(gapminder)
country
<fctr>
continent
<fctr>
year
<int>
lifeExp
<dbl>
pop
<int>
gdpPercap
<dbl>
AfghanistanAsia195228.8018425333779.4453
AfghanistanAsia195730.3329240934820.8530
AfghanistanAsia196231.99710267083853.1007
AfghanistanAsia196734.02011537966836.1971
AfghanistanAsia197236.08813079460739.9811
AfghanistanAsia197738.43814880372786.1134
Gapminder

Vi börjar med en graf utan några justeringar av temat (notera att vi logaritmerar pop och lifeExp för att grafen blir tydligare):

R
ggplot(gapminder, aes(x=log(pop),
                      y=log(lifeExp))) +
  geom_point(aes(color = continent)) +
  geom_smooth()

Vi ska nu modifiera detta tema genom att demonstrera 8 kompletta teman. För att skriva effektiv kod kommer vi därför skapa ett objekt (base_plot) som innehåller ovanstående graf:

R
base_plot <- ggplot(gapminder, aes(x=log(pop),
                      y=log(lifeExp))) +
  geom_point(aes(color = continent)) +
  geom_smooth()

Nu adderar vi teman på base_plot. Vi adderar även en titel för att det skall framgå på grafen vilket tema som har använts (se nedan).

R
base_plot +
  labs(title="Theme Background White (theme_bw)") +
  theme_bw()


base_plot +
  labs(title="Theme Classic (theme_classic)") +
  theme_classic()


base_plot +
  labs(title="Theme Minimal (theme_minimal)") +
  theme_minimal()


base_plot +
  labs(title="Theme Grey (theme_grey)") +
  theme_minimal()


base_plot +
  labs(title="Theme Linedraw (theme_linedraw)") +
  theme_linedraw()


base_plot +
  labs(title="Theme Dark (theme_dark)") +
  theme_dark()


base_plot
  labs(title="Theme Light (theme_light)") +
  theme_light()


base_plot +
  labs(title="Theme Void (theme_void)") +
  theme_void()

Ggthemes

Paketet ggthemes (https://jrnold.github.io/ggthemes/) innehåller ännu fler kompletta themes, scales och geoms för ggplot2. I ggthemes finns fler alternativ än i något annat existerande paket. Vidare finns alternativ särskilt framtagna för forskning, vetenskaplig publikation, färgblindhet, specifika tidskrifter, applikationer, osv. Installera paket med följande kommando:

R
install.packages("ggthemes")
library(ggthemes)

Vi provar ett färdigt tema skapat efter Wall Street Journal:

R
base_plot +
  labs(title="Theme Wall Street Journal") +
  theme_wsj()

Justera specifika element

Samtliga ovanstående exempel utgjordes av färdiga teman som modifierar många element samtidigt. Du kan modifiera i princip samtliga element i temat med hjälp av theme(). Denna funktion tar ett stort antal element som har elementfunktioner. Exempelvis används elementet title för att justera alla titlarna. Eftersom titlar är text så har de elementfunktionen element_text(). I element_text() kan vi exempelvis ändra storleken och färgen på titlarna med följande kod:

title = element_text(size=12, color="purple")

I grafen blir det som följer:

R
base_plot +
theme(title = element_text(size=15, color="gold1"))
Här följer en lista på elementen i theme(), följt av en bild som visar de vanligaste elementen och deras elementfunktioner.
R
theme(
  line,
  rect,
  text,
  title,
  aspect.ratio,
  axis.title,
  axis.title.x,
  axis.title.x.top,
  axis.title.x.bottom,
  axis.title.y,
  axis.title.y.left,
  axis.title.y.right,
  axis.text,
  axis.text.x,
  axis.text.x.top,
  axis.text.x.bottom,
  axis.text.y,
  axis.text.y.left,
  axis.text.y.right,
  axis.ticks,
  axis.ticks.x,
  axis.ticks.x.top,
  axis.ticks.x.bottom,
  axis.ticks.y,
  axis.ticks.y.left,
  axis.ticks.y.right,
  axis.ticks.length,
  axis.ticks.length.x,
  axis.ticks.length.x.top,
  axis.ticks.length.x.bottom,
  axis.ticks.length.y,
  axis.ticks.length.y.left,
  axis.ticks.length.y.right,
  axis.line,
  axis.line.x,
  axis.line.x.top,
  axis.line.x.bottom,
  axis.line.y,
  axis.line.y.left,
  axis.line.y.right,
  legend.background,
  legend.margin,
  legend.spacing,
  legend.spacing.x,
  legend.spacing.y,
  legend.key,
  legend.key.size,
  legend.key.height,
  legend.key.width,
  legend.text,
  legend.text.align,
  legend.title,
  legend.title.align,
  legend.position,
  legend.direction,
  legend.justification,
  legend.box,
  legend.box.just,
  legend.box.margin,
  legend.box.background,
  legend.box.spacing,
  panel.background,
  panel.border,
  panel.spacing,
  panel.spacing.x,
  panel.spacing.y,
  panel.grid,
  panel.grid.major,
  panel.grid.minor,
  panel.grid.major.x,
  panel.grid.major.y,
  panel.grid.minor.x,
  panel.grid.minor.y,
  panel.ontop,
  plot.background,
  plot.title,
  plot.title.position,
  plot.subtitle,
  plot.caption,
  plot.caption.position,
  plot.tag,
  plot.tag.position,
  plot.margin,
  strip.background,
  strip.background.x,
  strip.background.y,
  strip.clip,
  strip.placement,
  strip.text,
  strip.text.x,
  strip.text.y,
  strip.switch.pad.grid,
  strip.switch.pad.wrap,
)

Elementfunktioner:

Nedan skapar vi en figur med labels (labs()) för x, y och titel; nya skalor för x och y; samt justering av ett antal theme() element.

R
base_plot +
  # Ändrar labels på x, y och titel
  labs(x="Population",
       y="Life expectancy (years)",
       title="Life expectancy and population size") +
  
  # Ändrar skalan på x-axel och y-axel
  scale_y_continuous(breaks=seq(3, 5, by=0.5),
                     limits=c(2, 5)) +
  scale_x_continuous(breaks=seq(10, 20, by=1),
                     limits=c(10, 20)) +
  
  # Justerar teat
  theme(legend.text = element_text(color="brown4"),
        legend.title = element_blank(),
        legend.key = element_blank(),
        panel.grid.major.x=element_line(color = "lightgoldenrod3",
                                        size = 0.5,
                                        linetype = 2),
        panel.grid.minor.x=element_line(color = "palevioletred3",
                                        size = 0.5,
                                        linetype = 2),
        plot.background = element_rect(fill="wheat3"))