2017-02-06 8 views
1

私は4本のガイドラインが必要な散布図があります。私は、プロットスクリプトでこれらの行を定義するためにデータセットの変数を直接使用していません。 (垂直線はx値の平均と中央値で、2本の他の線の傾きは1と0.5です)
どのようにして線の色を定義し、正しい凡例ラベルを得ることができますか?私のプロットでは、色とラベルが混ざり合っています。ggplot2:scale_colour_manualを使ったラベルと色の混同

回答のある質問here (possibly duplicate)は上記の私の質問に似ていますが、完全ではないと思います。前者の問題は、scale_colourとscale_fill_manualの違いと、伝説を得るためにaes()を含めることの重要性に関するものです。私はgeom_-呼び出しで値を定義せず、scale_colour_manual()で値と色を区切っていたので、凡例ラベルと色の混合について質問します。

マイコード:

library(dplyr) 
df <- iris %>% 
    group_by(Species) %>% 
    do({ 
    mod = lm(Sepal.Length~Petal.Length, data = .) 
    data.frame(Intercept = coef(mod)[1], 
       Slope = coef(mod)[2], 
       SD= summary(mod)$coefficients[2,2]) 
    }) 

meanSlope <- mean(df$Slope) 
medianSlope <- median(df$Slope) 

library(ggplot2) 
ggplot(data=df, aes(x=Slope, y=SD)) + 
    geom_point() + 
    scale_x_continuous(limits = c(0,1.0)) + 
    scale_y_continuous(limits = c(0,1.0))+ 
    geom_abline(aes(intercept = 0, slope = 1, colour="red"), show.legend = TRUE) + 
    geom_abline(aes(intercept = 0, slope = 0.5, colour="blue"), show.legend = TRUE) + 
    geom_vline(aes(xintercept = meanSlope, colour= "green"), show.legend = TRUE) + 
    geom_vline(aes(xintercept= medianSlope, colour= "darkgreen"), show.legend = TRUE) + 
    scale_colour_manual(name="Guide lines", values=c("red", "blue", "green", "darkgreen"), 
         labels=c("1 SD", "0.5 SD", "mean", "median")) 

enter image description here

+0

HTTPの可能性の重複:/ /stackoverflow.com/questions/24063163/how-to-add-manual-colors-for-ag gplot2-geom-smooth-geom-line – akrun

+0

[ggplot2(geom \ _smooth/geom \ _line)のマニュアルカラーを追加する方法](http://stackoverflow.com/questions/24063163/how-to-add - マニュアルカラー - a-ggplot2-geom-smooth-geom-line) – Axeman

答えて

3

は、後で色を設定し、ラインの名前にマッピングしてみてください:

ggplot(data=df, aes(x=Slope, y=SD)) + 
    geom_point() + 
    scale_x_continuous(limits = c(0, 1.0)) + 
    scale_y_continuous(limits = c(0, 1.0))+ 
    geom_abline(aes(intercept = 0, slope = 1, colour = "1 SD"), show.legend = TRUE) + 
    geom_abline(aes(intercept = 0, slope = 0.5, colour = "0.5 SD"), show.legend = TRUE) + 
    geom_vline(aes(xintercept = meanSlope, colour = "mean"), show.legend = TRUE) + 
    geom_vline(aes(xintercept= medianSlope, colour = "median"), show.legend = TRUE) + 
    scale_colour_manual(name = "Guide lines", 
         values = c('1 SD' = "red", '0.5 SD' = "blue", 
           mean = "green", median = "darkgreen")) 

enter image description here

関連する問題