Получение легенд с пунктирной линией в ggplot, когда полосы ошибок сплошные

Мне трудно заставить легенду вести себя так, как я хочу, когда я делаю 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)

Сюжет


person Max Gordon    schedule 17.07.2013    source источник


Ответы (1)


Ха, как только я сдался и собирался опубликовать свой вопрос, я наткнулся на этот вопрос - оказывается, что guide="none" или guide=FALSE, которые я пробовал, не правильный вариант, ключ в варианте show_guide:

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, show_guide=FALSE)

Штриховая легенда

person Max Gordon    schedule 17.07.2013
comment
guide="none" будет аргументом scale_linetype, а не геометрии, и полностью подавит направляющую для типа линии (все линии в легенде будут сплошными); Вместо этого show_guide=FALSE в геометрии указывает, что эта конкретная геометрия не должна влиять на определение того, что показано в легенде. - person Brian Diggs; 18.07.2013
comment
@BrianDiggs Спасибо, я нахожу справку ggplot временами немного запутанной, например, нет упоминания show_guide в качестве опции ни в основной справке, ни на странице слоя, на которую ссылается .... - person Max Gordon; 18.07.2013
comment
Истинный. Это проявляется в некоторых примерах и в геометриях, где по умолчанию это неверно, но это не задокументировано должным образом. - person Brian Diggs; 18.07.2013