Я пытаюсь сделать свою мультипанель ggplot
с общей легендой более гибкой в ShinyApp
, позволяя пользователю выбирать, сколько панелей отображать.
В настоящее время мой код записывает объекты панели по 1 за раз.
grid_arrange_shared_legend(p1,p2,p3,p4, ncol = 4, nrow = 1)
Я не совсем понимаю, почему я не могу найти способ сказать grid_arrange_shared_legend
принять список графиков (объект списка), а не записывать их 1 за другим. Выдает эту ошибку:
Ошибка в 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 на основе длины списка...