我试图通过允许用户选择要绘制的面板数量来使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 ......