如何将两个ggplot2绘制的图表合并为一个整合图表?
如何将两个ggplot2绘制的图表合并为一个整合图表?
嘿,我懂你现在的困扰——想把这两个ggplot图表合并成一个完整的图,结果用了combined_plot还是分开的,对吧?别担心,这里有两种实用的方法帮你搞定!
方法一:用patchwork包快速拼接(简单直观)
patchwork是专门为ggplot2设计的图表拼接工具,用起来超方便,完全不用复杂的设置。
步骤如下:
- 先安装并加载包:
install.packages("patchwork") library(patchwork)
- 直接拼接你的两个图:
- 如果想左右排列:
combined_plot <- plot1 + plot2 print(combined_plot)
- 如果想上下排列(更适合共享x轴的场景):
combined_plot <- plot1 / plot2 # 还可以让它们共享x轴刻度,避免重复显示 combined_plot <- plot1 / plot2 + plot_layout(axes = "collect") print(combined_plot)
方法二:制作双y轴图表(共享同一个x轴)
如果你的需求是让两个图表共享x轴(都是日期),一个用左侧y轴展示累计观测数,一个用右侧y轴展示光照数据,那就可以用ggplot的双y轴功能来实现:
需要注意的是,两个变量的数值范围可能差异很大,所以我们要先计算一个缩放比例,让光照数据适配累计观测数的刻度范围,再添加到图表中。这里给你修改好的完整代码:
# 加载必要的包 library(ggplot2) # 先创建基础柱状图(保留你原来plot1的内容) combined_plot <- ggplot() + geom_bar(data = complete_august_data, aes(x = DATE, y = Count, fill = MANUAL.ID.), stat = "identity", width = 0.7, position = "dodge") + geom_bar(data = complete_july_data, aes(x = DATE, y = Count, fill = MANUAL.ID.), stat = "identity", width = 0.7, position = "dodge") + labs(title = "Kumulative kurver og belysning for juli og august ved Borupgård 2018", x = "Dato", y = "Kumulative observationer", fill = "Art") + scale_x_date(date_labels = "%Y-%m-%d", limits = as.Date(c("2018-07-26", "2018-08-29"))) + theme_minimal() # 计算缩放比例,让光照数据适配累计观测数的数值范围 scale_factor <- max(complete_august_data$Count, complete_july_data$Count, na.rm = TRUE) / max(result_df$Belysning, na.rm = TRUE) # 添加右侧y轴和光照的折线、散点 combined_plot <- combined_plot + geom_line(data = result_df, aes(x = Dato, y = Belysning * scale_factor), color = "gold2") + geom_point(data = result_df, aes(x = Dato, y = Belysning * scale_factor), color = "goldenrod", size = 2) + scale_y_continuous( sec.axis = sec_axis(~ . / scale_factor, name = "Belysning") ) + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 打印最终图表 print(combined_plot)
⚠️ 小提醒:双y轴虽然看起来直观,但有时候会误导读者对数据趋势的判断,建议只有在两个变量的趋势确实需要直接对比时才使用哦!
另外,你之前用的combined_plot没效果,大概率是因为这个函数不属于ggplot2的官方工具,或者用法不符合要求,而上面的两种方法都是ggplot社区常用且可靠的方案~
备注:内容来源于stack exchange,提问作者Marie Friis
相关产品推荐
相关产品推荐

