2015-07-12 56 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

您可以簡單地將「errorbar」代碼行的位置切換到「point」代碼行之上。這樣,點將覆蓋小線,而不是相反。

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-偉大的 - 可重現的例子)的更多信息。 – Jota