combined_plots <- grid.arrange(pm25_plot, pm10_plot, NO2_plot, O3_plot, nrow = 1) 错误于gList(...): "gList"只许用'grobs'
时间: 2024-12-14 17:18:44 浏览: 11
Graduationdesign_Plots-master.zip_Master Plots_人工势场c_人工势场法_人工势场法
5星 · 资源好评率100%
在R语言中,当你看到`error in gList(...): "gList" only permits 'grobs'`这样的错误提示,通常意味着你在尝试将非图形对象(non-grobs)添加到`gList`结构中,而`grid.arrange()`函数期望的是由`grid grob`对象组成的列表。
在你给出的例子`combined_plots <- grid.arrange(pm25_plot, pm10_plot, NO2_plot, O3_plot, nrow = 1)`中,`pm25_plot`, `pm10_plot`, `NO2_plot`, 和 `O3_plot`可能是你的图对象,但是直接传递给`grid.arrange()`可能会有问题,因为这些对象可能不是`grid grob`类型。
解决这个问题,你需要确保这些图对象已经被转换成`grid grob`。如果是`ggplot2`生成的图,你可以通过`ggsave()`或`grid::grobTree()`将其转换。如果是其他库的图,查阅对应库的手册文档找到如何获取`grob`。
下面是处理这种问题的一般步骤:
1. 确保图对象已转化为`grid grob`。如果是`ggplot2`,试试:
```r
pm25_grob <- ggplot_gtable(ggplot_build(pm25_plot))
```
2. 将所有图转换为`grob`形式:
```r
combined_grobs <- list(pm25_grob, pm10_grob, NO2_grob, O3_grob)
```
3. 再次使用`grid.arrange()`:
```r
combined_plots <- grid.arrange(combined_grobs[[1]], combined_grobs[[2]], combined_grobs[[3]], combined_grobs[[4]], nrow = 1)
```
阅读全文