2015-07-12 3 views
1

У меня есть участок нарисованный с помощью следующей команды:Удалить errorbars из легенды (ggplot2)

ggplot(data=test_mod, aes(x=realDist , y=1-value, color=as.factor(foo) , size=as.factor(foo))) + 
    stat_summary(fun.y=mean, geom="line", alpha=0.85) + 
    stat_summary(fun.y=mean, geom="point", pch=21, fill="white", size=2) + 
    #stat_summary(fun.data=mean_cl_normal, geom="errorbar", width=8, size = 0.5) + 
    theme_bw(base_size = 15, base_family = "Palatino") + 
    theme(legend.key = element_blank()) 

И я получаю эту легенду:

enter image description here

Однако, когда я раскомментировать строку 3 от команды:

ggplot(data=test_mod, aes(x=realDist , y=1-value, color=as.factor(foo) , size=as.factor(foo))) + 
    stat_summary(fun.y=mean, geom="line", alpha=0.85) + 
    stat_summary(fun.y=mean, geom="point", pch=21, fill="white", size=2) + 
    stat_summary(fun.data=mean_cl_normal, geom="errorbar", width=8, size = 0.5) + 
    theme_bw(base_size = 15, base_family = "Palatino") + 
    theme(legend.key = element_blank()) 

Я получаю немного другую легенду:

enter image description here

Обратите внимание на крошечные линии, которые идут через точки после того, как я начал использовать errorbar для моего участка.

Как я могу избавиться от этих крошечных линий, появляющихся в моей легенде?

ответ

2

Вы можете отключить легенду для этого элемента с помощью show_guide=FALSE.show.legend=FALSE.

ggplot(data=test_mod, aes(x=realDist , y=1-value, color=as.factor(foo) , size=as.factor(foo))) + 
    stat_summary(fun.y=mean, geom="line", alpha=0.85) + 
    stat_summary(fun.y=mean, geom="point", pch=21, fill="white", size=2) + 
    stat_summary(fun.data=mean_cl_normal, geom="errorbar", width=8, size = 0.5, show.legend=FALSE) + 
    theme_bw(base_size = 15, base_family = "Palatino") + 
    theme(legend.key = element_blank()) 
+0

'show_guide' устарел. Вместо этого это 'show.legend'. – Tunaki

1

Вы можете просто переключить положение строки кода ошибки, которая будет находиться над строкой «точка» кода. Таким образом, точки будут покрывать крошечные линии, а не наоборот.

ggplot(data=test_mod, aes(x=realDist , y=1-value, color=as.factor(foo) , size=as.factor(foo))) + 
    stat_summary(fun.y=mean, geom="line", alpha=0.85) + 
    stat_summary(fun.data=mean_cl_normal, geom="errorbar", width=8, size = 0.5) + 
    stat_summary(fun.y=mean, geom="point", pch=21, fill="white", size=2) + 
    theme_bw(base_size = 15, base_family = "Palatino") + 
    theme(legend.key = element_blank()) 
+0

, хотя жизнеспособное решение, ответ @ nongkrong решает проблему в самом сердце. Я должен согласиться с этим, но ваш ответ также дал мне важное понимание. Не знал, что порядок исполнения влияет на чертежи. Благодаря! – cross

+0

@cross Рад, это помогло вам! Просто указатель на задание таких вопросов: не забудьте включить воспроизводимый пример в свои вопросы. Таким образом, я могу просто запустить предоставленный вами код и получить тот же самый график, который у вас есть. – Jota

+0

@ user4786271 Существует несколько возможных способов. В общем, вы хотите предоставить * минимальный * воспроизводимый пример. Вы можете сделать это самостоятельно (например, 'data.frame (x = 1: 100, y = 1: 100, z = 1: 100)', использовать один из встроенных наборов данных (например, 'mtcars') или предоставить вывод 'dput (test_mod)', если он не слишком большой. Прочитайте [как сделать R воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a- большой-r-воспроизводимый пример) для получения дополнительной информации. – Jota

Смежные вопросы