【发布时间】:2019-04-01 20:00:23
【问题描述】:
我正在尝试通过允许用户选择要绘制的面板数量来使我的多面板 ggplot 与 ShinyApp 中的共享图例更加灵活。
目前我的代码像这样一次写出面板对象 1。
grid_arrange_shared_legend(p1,p2,p3,p4, ncol = 4, nrow = 1)
我不完全明白为什么我找不到方法告诉grid_arrange_shared_legend 接受一个地块列表(列表对象),而不是一个接一个地写出来。
它抛出这个错误:
UseMethod("ggplot_build") 中的错误: 'ggplot_build' 没有适用的方法应用于“NULL”类的对象
library(ggplot2)
library(lemon)
plotlist <- list()
dsamp <- diamonds[sample(nrow(diamonds), 300), ]
plotlist$p1 <- qplot(carat, price, data = dsamp, colour = clarity)
plotlist$p2 <- qplot(cut, price, data = dsamp, colour = clarity)
plotlist$p3 <- qplot(color, price, data = dsamp, colour = clarity)
plotlist$p4 <- qplot(depth, price, data = dsamp, colour = clarity)
grid_arrange_shared_legend(plotlist, ncol = 4, nrow = 1)
使用列表,列表中有多少个地块无关紧要,我会根据列表的长度计算 ncol 或 nrow...
【问题讨论】: