У вас не должно быть shape="Mean"
в вызове aes
. Это не эстетическое отображение! Наличие его в aes
заставляет ggplot
думать, что вы устанавливаете shape
для сопоставления с символьной переменной, которая всегда принимает значение "mean"
. Отсюда и странная легенда.
Вы можете просто использовать shape="+"
в качестве аргумента в вызове stat_summary
, чтобы получить желаемый эффект. Вам, вероятно, придется также убрать линию scale_shape_manual("Summary Statistics", values=c("Mean"="+"))
, потому что шкалы формы больше нет.
Чтобы ответить на последнюю часть вашего вопроса, если вы хотите иметь отдельную строку «среднее» для своей легенды, вы можете добавить дополнительный уровень «Среднее» к переменной, сопоставленной с эстетикой fill
(затем вручную сделать заливку прозрачной). Смотри ниже:
d <- data.frame(x=factor(c(1,2)), y=rnorm(100))
ggplot(d, aes(x,y, group=x, fill=x)) +
geom_violin() +
stat_summary(shape="+", fun="mean", aes(fill="Mean"), geom="point", size=3) +
scale_fill_manual(values=c("blue", "red", "#00000000"), limits=c(1,2,"Mean"))
Редактировать: я нашел способ избавиться от рамки вокруг + в средней строке легенды, но это ужасный хак. Вам нужно два слоя stat_summary
, один с color
прозрачным с эстетическим отображением (чтобы поле легенды было прозрачным, но это делает легенду «+» также прозрачной), а затем второй с color="black"
непосредственно, который заменяет «+» в легенда, но не коробка.
ggplot(d, aes(x,y, group=x, fill=x, color=x)) +
geom_violin() +
stat_summary(shape="+", fun="mean", aes(fill="Mean",color="Mean"), geom="point", size=3)+
stat_summary(shape="+", fun="mean",color="black", geom="point", size=3) +
theme_classic() +
scale_fill_manual(values=c("lightblue", "red", "#00000000"), limits=c(1,2,"Mean"))+
scale_color_manual(values=c("black", "black", "#00000000"), limits=c(1,2,"Mean"))
person
George Savva
schedule
12.03.2020
show.legend = FALSE
к вызову статистики - person camille   schedule 12.03.2020override.aes
для определенного типа легенды, в данном случае для легенды заполнения. Похоже, что этот пост должен вас охватить, и это тоже может помочь - person camille   schedule 12.03.2020