У меня есть многослойный график, который включает отдельные точки (solid точек), средние значения для каждого класса (ограниченная точка) и "***", указывающие значения p.value.
library(ggplot2)
library(reshape2)
#layer1
layer1<- data.frame("class1"= sample(c("tall", "medium", "short"), 100, replace = TRUE),
"class2"= sample(c("red", "blue"), 100, replace = TRUE),
"value"= runif(100))
layer1<- melt(layer1)
#layer2
layer2<- data.frame("class1"= rep(c("tall", "medium", "short"), each=2),
"class2"= rep(c("red", "blue"), 3),
"value"= runif(6))
#layer3
layer3<- data.frame("class1"= c("tall", "medium", "short"),
"tag"= c("***", "**", "*"))
#el plot
plot<- ggplot() +
geom_point(aes(x=class1, y=value, col=class2), data=layer1, position=position_dodge(0.5)) +
geom_point(aes(x=class1, y=value, fill=class2), data=layer2, shape=21, size=2, position=position_dodge(0.5)) +
geom_text(aes(x=class1, y=1), data=layer3, label=layer3$tag)
Я хочу построить легенда, похожая на эту , но у меня проблемы с ее выполнением. Есть ли какая-нибудь ручная функция легенды, которую я могу добавить как часть ggplot, например magic_legend (title = legend title, icons = c (1, 1, 21, ***, **, *), fills = c (красный, синий), метки = c (имя1, имя2, среднее значение, р <0,001, р <0,01, р <0,05) </p>