使用AgroR绘制的两幅图无法通过ggplot与gridExtra合并的求助
解决AgroR绘图合并失败的问题
问题根源
AgroR的大部分绘图函数输出的是base R原生图形,而grid.arrange()这类工具只兼容ggplot或grid类对象,直接调用自然无效。
三种可行解决方法
方法一:捕获base图形后用gridExtra合并
先把AgroR生成的图形捕获为grid兼容对象,再进行排列:# 捕获第一幅图 plot1 <- recordPlot() your_agror_plot1() # 替换成你的AgroR绘图代码 dev.off() # 捕获第二幅图 plot2 <- recordPlot() your_agror_plot2() dev.off() # 合并图形 library(gridExtra) library(grid) grid.arrange(grid.draw(plot1), grid.draw(plot2), ncol = 2)方法二:提取数据用ggplot重绘后合并
部分AgroR函数支持plot = FALSE参数,返回绘图用的原始数据,你可以用ggplot重新绘制后再合并:# 获取第一幅图的数据并重绘 plot1_data <- your_agror_plot1(plot = FALSE) g1 <- ggplot(plot1_data, aes(x = 你的x列, y = 你的y列)) + # 对应AgroR图的图层类型,比如geom_boxplot、geom_point等 geom_boxplot() + theme_classic() # 处理第二幅图 plot2_data <- your_agror_plot2(plot = FALSE) g2 <- ggplot(plot2_data, aes(x = 你的x列, y = 你的y列)) + geom_line() + theme_classic() # 合并 grid.arrange(g1, g2, nrow = 1)方法三:用base R原生布局直接绘制
如果不需要ggplot的样式,直接用base R的布局命令就能快速排列:# 设置1行2列的布局 par(mfrow = c(1, 2)) your_agror_plot1() your_agror_plot2() # 恢复默认布局 par(mfrow = c(1, 1))
内容的提问来源于stack exchange,提问作者Kehinde Ojeniyi
相关产品推荐
相关产品推荐

