У меня проблема с созданием легенды для гистограммы.Я хочу сделать сетку гистограмм с общей легендой.У меня есть две проблемы.
У каждой гистограммы есть линейка геомов, показывающая среднее значение, в то время как гистограмма показывает все значения.Я хочу сделать легенду, которая показывает цвет geom_vline и серую заливку гистограммы по умолчанию.Кажется, я не могу сделать это, так как для создания легенды для заливки гистограммы должны быть разбиты по факторам.Также я не могу создать легенду для гистограммы с помощью scale_colour_manual ().Точно так же я не могу сделать легенду для vline с помощью scale_fill_manual ()
Я хочу иметь возможность центрировать легенду под упорядоченными гистограммами.
ниже приведен код и выходные данные, показывающие мои гистограммы, адаптированные для набора данных радужной оболочки
library(ggplot2)
library(mosaic)
library(grid)
library(gridExtra)
data("iris")
setosaHistogram <-ggplot(data=iris)+geom_histogram(mapping=aes(x=Petal.Length,color='Petal Histogram'))+xlab('Petal Length') +
theme(plot.title = element_text(size = 10, face = "bold",hjust = 0.5),legend.position="none") +
ggtitle(paste("Setosa"))+
geom_vline(aes(xintercept = mean(iris[iris$Species=='setosa','Petal.Length']), color = "Species Mean"),linetype=2)+
scale_fill_manual(name = 'Legend',values=C("Petal Histogram"='grey','Species Mean' ="red"))
versicolorHistogram <-ggplot(data=iris)+geom_histogram(mapping=aes(x=Petal.Length,color='Petal Histogram'))+xlab('Petal Length') +
theme(plot.title = element_text(size = 10, face = "bold",hjust = 0.5),legend.position="none") +
ggtitle(paste("Versicolor"))+
geom_vline(aes(xintercept = mean(iris[iris$Species=='versicolor','Petal.Length']), color = "Species Mean"),linetype=2)+
scale_fill_manual(name = 'Legend',values=C("Petal Histogram"='grey','Species Mean' ="red"))
virginicaHistogram <-ggplot(data=iris)+geom_histogram(mapping=aes(x=Petal.Length,color='Petal Histogram'))+xlab('Petal Length') +
theme(plot.title = element_text(size = 10, face = "bold",hjust = 0.5),legend.position="none") +
ggtitle(paste("Virginica"))+
geom_vline(aes(xintercept = mean(iris[iris$Species=='virginica','Petal.Length']), color = "Species Mean"),linetype=2)+
scale_fill_manual(name = 'Legend',values=C("Petal Histogram"='grey','Species Mean' ="red"))
g <- ggplotGrob(setosaHistogram +
theme(legend.position = 'bottom'))$grobs
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
legend <- g[[which(sapply(g, function(x) x$name) == "guide-box")]]
arrangedPlots<-grid.arrange(setosaHistogram,versicolorHistogram,virginicaHistogram,legend,ncol=3, nrow=2)