---
title: "Themes"
author: Abhijit Dasgupta, PhD
abstract: ""
---
```{r setup, include=F, child = here::here('slides/templates/setup.Rmd')}
```
layout: true
---
class: middle, center
# Customization
---
## Colors
ggplot2 has several ways to customize colors
1. If colors are based on categorical data
- `scale_color_manual`
- `scale_fill_manual`
1. If colors are based on continuous data
- `scale_{color,fill}_gradient` makes sequential gradients (specify low and high colors)
- `scale_{color,fill}_gradient2` makes divergent gradients (specify low, middle and high colors)
---
## Colors
.pull-left[
```{r a1, eval = F, echo = T}
(g1 <- ggplot(diamonds,
aes(x = cut, y = price,
color = carat))+
geom_jitter()
)
```
]
.pull-right[
```{r 06-Lecture6-1, eval = T, echo = F, ref.label = "a1"}
```
]
---
## Colors
.pull-left[
```{r a2, eval = F, echo = T}
g1 + scale_color_gradient(low='white',high = 'red')
```
]
.pull-right[
```{r 06-Lecture6-2, eval = T, echo = F, ref.label = "a2"}
```
]
---
## Colors
.pull-left[
```{r a3, eval = F, echo = T}
g1 + scale_color_gradient2(low = 'blue',
mid='white',
high='red',
midpoint = 2)
```
]
.pull-right[
```{r 06-Lecture6-3, eval = T, echo = F, ref.label = "a3"}
```
]
---
## [ggsci](https://cran.r-project.org/web/packages/ggsci/vignettes/ggsci.html) #
These are palettes based on scientific journals and sci-fi shows
```{r , echo=TRUE, fig.height=4}
library(ggsci)
plt <- ggplot(penguins, aes(bill_length_mm, body_mass_g, color=species))+
geom_point()
```
.pull-left[
```{r , echo=TRUE, fig.height=3}
plt + scale_color_lancet()
```
]
.pull-right[
```{r , echo=TRUE, fig.height=3}
plt + scale_color_npg()
```
]
---
# RColorBrewer
This package is a wrapper around ColorBrewer (https://colorbrewer2.org), which is meant to create sequential and divergent color palettes for discrete classes.
These palettes are available in **ggplot2** as `scale_color_brewer` and `scale_fill_brewer`
There are also a variation of these for continuous data, using these color schemes to create gradients. These
are accessed using `scale_color_distiller` and `scale_fill_distiller`
```{r , echo=TRUE, fig.height=3}
ggplot(penguins, aes(bill_length_mm, body_mass_g, color=species))+
geom_point()+
scale_color_brewer(type='qual', palette=2)
```
---
## RColorBrewer
.pull-left[
There are three kinds of palettes: sequential (_seq_), divergent (_div_) and qualitative (_qual_)
Sequential palettes are good for scales that are ordered
+ Income
+ death rates
Divergent palettes are good when you want to show both extremes
+ Heatmaps
]
.pull-right[
```{r , echo=FALSE}
RColorBrewer::display.brewer.all()
```
]
---
## [viridis](https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html)
The **viridis** package provides color palettes that are not only pleasing, but are robust to most forms of
color-blindness, including green-blind (deuteranopia), red-blind (protanopia) and blue-blind (tritanopia)
```{r , echo=TRUE, fig.height=5}
library(viridis)
ggplot(penguins, aes(bill_length_mm, body_mass_g, color=species))+
geom_point()+
scale_color_viridis(discrete=TRUE) +
theme_bw()
```
---
## Text
The `extrafont` package allows you to use fonts already on your computer in your graphics.
.pull-left[
```{r b1, eval = F, echo = T}
library(extrafont)
loadfonts()
g1 + theme(text = element_text(family='Georgia'))
```
]
.pull-right[
```{r 06-Lecture6-4, eval = T, echo = F, ref.label = "b1"}
```
]
---
## Text
The `extrafont` package allows you to use fonts already on your computer in your graphics.
.pull-left[
```{r b2, eval = F, echo = T}
g1 + theme(text =
element_text(family='Lobster Two',
size=14))
```
]
.pull-right[
```{r 06-Lecture6-5, eval = T, echo = F, ref.label = "b2"}
```
]
---
## Grey palettes
We might want gray-scale palettes, to avoid journal color fees, for example
```{r , echo=TRUE, fig.height=4}
plt + scale_color_grey()+theme_bw()
```
---
class: middle, inverse
# Themes #
---
## ggplot2 themes
There are several themes built into **ggplot2**
| | |
|----------------|---------------|
| theme_minimal | theme_bw |
| theme_dark | theme_gray |
| theme_classic | theme_minimal |
| theme_linedraw | theme_classic |
+ You can modify any of these themes using the `theme` function
+ You can set a particular theme for a document at the very beginning using `theme_set`
```{r, eval=FALSE}
theme_set(theme_classic)
```
---
## ggthemes (https://jrnold.github.io/ggthemes/) ##
---