2017-08-21 24 views
0

私は同じリンクでexampleに従っています。同じプロットで2つのデータフレームをグラフ化しようとしているのと同様の状況です。私は、グラフ内で動作するデータフレームの1つの線種を変更することに興味がありますが、凡例に正しく表示されません。ggplot2で凡例の線種が正しく表示されない

例データセット:

set.seed(456) 
n <- 20 
dfr <- data.frame(
    id=rep(1:n, 2), 
    group=rep(c("1","2"), each=n), value=c(rnorm(n), rnorm(n, sd=1.1)) 
) 

df_95ci <- data.frame(y_values=c(-1,1)*qnorm(0.95)) 
df_99ci <- data.frame(y_values=c(-1,1)*qnorm(0.99)) 

require(ggplot2) 

コード:

ggplot(data=dfr, mapping=aes(x=id, y=value)) + 
    geom_line(mapping=aes(colour=group)) + 
    geom_hline(data= df_95ci, mapping=aes(yintercept=y_values, size= "95% CI"), colour = "orange", linetype="dotdash") + 
    geom_hline(data= df_99ci, mapping=aes(yintercept=y_values, size= "99% CI"), colour = "darkred", linetype="dotted") + 
    scale_color_hue("Group") + 
    scale_size_manual(
    "CI horizontal line", values=rep(1,4), 
    guide=guide_legend(override.aes = list(colour=c("orange", "darkred"))) 
) + 
    scale_linetype_identity(guide="legend") 

Output

あなたは私が異なる線種を持つ2つのラインを持っていますが、彼らは伝説で同じだ見ることができるように。

+0

簡単な解決策は、彼らにあなたが美学内部 'サイズ='と同じ方法にラベルを付け、そして 'あなたのサイズのためにやったのと同じ方法をscale_linetype_manual'を追加することです。 – Brian

答えて

1

これをしますか?

ggplot(data=dfr, mapping=aes(x=id, y=value)) + 
    geom_line(mapping=aes(colour=group)) + 
    geom_hline(data= df_95ci, mapping=aes(yintercept=y_values, linetype= "95% CI"), 
       colour = "orange", size = 1) + 
    geom_hline(data= df_99ci, mapping=aes(yintercept=y_values, linetype= "99% CI"), 
       colour = "darkred", size = 1) + 
    scale_linetype_manual(
     "CI horizontal line", values=c("95% CI" = 4, "99% CI" = 3), 
     guide=guide_legend(override.aes = list(colour=c("orange", "darkred"))) 
    ) 

enter image description here

+0

ありがとうございました。もう少し複雑な私自身のグラフ/コードは、 "WHO 2007の成長基準"(http://i.imgur.com/RYR3Xex.png)に表示されない線種ではいくつかの困難を抱えていましたが、ここからインスピレーションを得て(https://stackoverflow.com/questions/20378276/legend-does-not-show-line-type-in​​-ggplot2-density-plot) その他の場合:alpha値は、geomsにアルファ引数がある場合、凡例を調整する際の迷惑です。それが最初に無効にして、消えている線種/その他の凡例のインジケータが原因であるかどうかを確認する方が良いです。 –

+0

@VYuあなたにおすすめです! –

関連する問題