- 已编辑
问题描述
在ggplot中,可以通过叠加多个geom_xxx()函数实现多个图层的绘制。但是默认情况下,这些图层的图例都会被绘制出来。有时出于可读性考虑,并不需要显示所有图层的图例。
案例数据
现有如下R代码:
library(tidyverse)
# 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
# 绘图
ggplot(dataset, aes(year, value, color=indicator))+geom_line()+geom_text(data=status_quo, aes(year, value, label=1:2), vjust=-1)+theme(legend.position='bottom')
上述代码绘制的统计图有两个图层,底下是geom_line()绘制的折线图,上面是geom_text()追加的文字层。但是我希望在图例中,不要显示折现的图例,而只显示文字图层的图例,且1、2对应的图例文本label=status_quo$value。目前的图例体现了两个图层的所有信息,比较杂乱。
案例数据与真实需求的区别
在我的真实需求中,折线图层里有接近100根线,且每根线对应一段较长的文本(平均一两百字)。我希望读者只关注截止时刻取值最大的三条曲线,分别标注1、2、3,并在图片下方显示三条曲线对应的文本。