使用ggplot2优化多线图可读性:添加趋势模糊或图例标识
需求
- 之前尝试给所有线条设置不同样式,但被指出操作过于复杂,现基于现有代码,希望实现以下任一功能:
- 给每套公寓历年销售记录的线条添加趋势模糊效果;
- 在图例中新增一条浅灰色线条,标注其代表“公寓”。
现有R代码
data.frame(years, xxx, col6, col8, col9, col10, col13, col15, col16, col17, col18, col33, col34, col39, col40, col41, col43, col44, col46, col48, col49, col50, col53, col54, col55) %>% # 创建包含24套公寓的数据集 pivot_longer(-years) %>% # 将年份设为X轴,转换为长格式 mutate(is_real = !is.na(value)) %>% group_by(name) %>% # 按公寓分组 mutate(value = pracma::interp1(years, value, years, "linear")) %>% # 线性插值补全缺失值 ggplot(aes(years, value, group = name)) + theme_classic() + geom_line(na.rm = TRUE, linewidth = 4, alpha = 0.3) + geom_line(aes(linetype=name)) + geom_point(data = . %>% filter(is_real), na.rm = TRUE, size = 2) + # 绘制真实数据点 geom_segment(aes(x = 2016, y = 0, xend = 2016, yend = 5000000, linetype = "Big Storm")) + # 添加2016年风暴标记线 scale_y_continuous(labels = scales::dollar, trans = "log10") + # Y轴设为对数刻度,显示货币格式 scale_x_continuous(name="销售年份", labels=as.character(years), breaks=years) + # X轴显示所有年份 scale_linetype_manual(name="", values=c("Big Storm"=1)) + # 为风暴线添加图例 theme(axis.text.x=element_text(angle=90, vjust=0.5, hjust=1)) # X轴标签旋转90度
当前图表效果

内容的提问来源于stack exchange,提问作者PhobixPhobix
相关产品推荐
相关产品推荐

