R每日一画|拼图基本功

今天是ggplot2的拼图。

数据准备

# All gone with one touch
rm(list=ls())
options(stringsAsFactors = F)

# 加载包
library(ggplot2)
library(tidyverse)

## 读取数据
#chic <- readr::read_csv("https://raw.githubusercontent.com/Z3tt/R-Tutorials/master/ggplot2/chicago-nmmaps.csv")
chic <- readr::read_csv(file = "data/chicago-nmmaps.csv")

# 数据情况
tibble::glimpse(chic)

分面

ggplot2有两个分面功能可以实现拼图:facet_wrap和facet_grid。

facet_wrap创建一个变量的面,在前面用波浪线写:facet_wrap(~ variable)。

g <- ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "chartreuse4", alpha = .3) +
  labs(x = "Year", y = "Temperature (°F)") +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

g + facet_wrap(~ year, nrow = 1)

R每日一画|拼图基本功_第1张图片
image-20210217214923893.png

改变行和列布局

g + facet_wrap(~ year, nrow = 2)
R每日一画|拼图基本功_第2张图片
image-20210217215039189.png

还可以是不对称的排列:

g + facet_wrap(~ year, ncol = 3) + theme(axis.title.x = element_text(hjust = .15))
R每日一画|拼图基本功_第3张图片
image-20210217220220787.png

根据每幅图的数据使用不一样的y轴范围

ggplot2的分面默认使用同样的坐标轴范围,以便于不同图之间的比较。但是有时候需要根据数据特点,用不同的范围,这个时候可以设置:scales = "free"。

g + facet_wrap(~ year, nrow = 2, scales = "free")

现在x and y axes differ in their range!

R每日一画|拼图基本功_第4张图片
image-20210217220550364.png

绘制双变量分面图

在绘制图形时,变量的先后循序决定行和列。

ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "orangered", alpha = .3) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  labs(x = "Year", y = "Temperature (°F)") +
  facet_grid(year ~ season)
R每日一画|拼图基本功_第5张图片
image-20210217220839932.png

facet_wrap的使用

g + facet_wrap(year ~ season, nrow = 4, scales = "free_x")
R每日一画|拼图基本功_第6张图片
image-20210217221044538.png

明天会有更高级的拼图玩法。

你可能感兴趣的:(R每日一画|拼图基本功)