复杂的图我选择拼图,不简便,但是避免陷入到格式地狱里。
library(tidyverse)
library(cowplot)
# freeny是一个R自带的示例数据集
rownames_to_column(freeny, 'year') %>% tibble %>% mutate(year=as.numeric(year)) %>% select(-lag.quarterly.revenue) %>% gather(indicator, value, -year) -> dataset
# 只对其中一部分的数据走势感兴趣
filter(dataset, year==1971.75) %>% .[c(4, 1), ] -> status_quo
# 绘图
## 主体
p_body = ggplot() +
geom_line(data=dataset, aes(year, value, color=indicator)) +
geom_text(data=status_quo, aes(year, value, label=1:2, color=color), vjust=-1) +
theme(legend.position='none')
## 分离图例
p_legend = ggplot() +
geom_text(data=status_quo, aes(year, value, label=1:2, color=indicator)) +
theme(legend.position='bottom')
## 拼图
plot_grid(
plotlist = list(p_body, get_plot_component(p_legend, "guide-box", return_all = T)[[3]]), # 因为text不是图形,所以不能直接用`get_legend`
nrow = 2, rel_heights = c(9, 1)
)