Я делаю сюжет с двумя разными отображениями («группа» отображается на цвет и тип линии, а «на» отображается в форму). Я хотел бы объединить эти два отображения в одной легенде, но не могу получить форму в легенде.
Вот моя попытка:ggplot2: есть одна легенда для двух сопоставлений
set.seed(123)
plotdata = cbind.data.frame(x = rep(1:5, times = 4),
y = rnorm(20),
from = rep(c("1","2"), each = 10),
to = rep(c("1","2"), times= 10))
plotdata = cbind.data.frame(plotdata, group = paste0(plotdata$from, "to", plotdata$to))
library(ggplot2)
plot1 = ggplot(plotdata, aes(x = x, y = y, group = group, color = group, lty = group, shape = to)) +
geom_point() + geom_line() + theme_bw() +
scale_color_discrete(name = "",
breaks = c("1to1", "1to2", "2to1", "2to2"),
labels = c("1to1", "1to2", "2to1", "2to2")) +
scale_linetype_discrete(name = "",
breaks = c("1to1", "1to2", "2to1", "2to2"),
labels = c("1to1", "1to2", "2to1", "2to2")) +
scale_shape_manual(name = "",
values = c(1, 2, 1, 2),
breaks = c("1to1", "1to2", "2to1", "2to2"),
labels = c("1to1", "1to2", "2to1", "2to2"))
print(plot1)
Как вы можете видеть на графике у меня есть одна легенда, но форма всегда круг.
Желаемое поведение: фигура в легенде чередуется между кругом и пирамидой, как на графике.
То, что я пробовал до сих пор, это указать форму вручную, но это не помогло, как вы можете видеть выше. Я также посмотрел на объект сюжета, надеясь, что смогу его манипулировать, но безрезультатно.