Мне трудно заставить легенду вести себя так, как я хочу, когда я делаю ggplot с погрешностями. Поскольку планки погрешностей выглядят нелепо с пунктирной линией, я делаю ее сплошной, к сожалению, это также приводит к тому, что легенда забывает о свойстве пунктирной линии.
Есть несколько похожих SO-вопросов, но я не нашел ни одного, который действительно решает эту конкретную проблему (этот, вероятно, самый близкий, другое подобное можно найти здесь). Хэдли дал ответ в 2010 году на очень похожий вопрос в списке R-help, но я не уверен, как его реализовать, и мне кажется, что это много работы, поскольку у меня есть четыре линии и две грани в моем фактическом сюжете.
Проверочный код
set.seed(1)
test_df <- data.frame(models = rep(paste("Model", LETTERS[1:3]), 3),
x = c(rep(1, 3),
rep(2, 3),
rep(3, 3)),
y = c(1:3,1:3+1+rnorm(3,0,.2),1:3+2)+rnorm(3,0,.3))
test_df$ymax <- test_df$y + .3
test_df$ymin <- test_df$y - .3
ggplot(test_df, aes(x=x, y=y, color=models, linetype=models)) +
geom_line() +
geom_errorbar(aes(ymax=ymax, ymin=ymin), linetype=1,
lwd=1.2, width=.5)