2017-01-20 9 views
1

theme()guides()の機能を使用して凡例のキーを正確に一致させようとしています。ggplot2の微調整の凡例キーで問題が発生する

このプロットを皮切り:

library(ggplot2) 
data(mpg) 

mpg$year <- as.numeric(mpg$year) 
means <- tapply(mpg$displ, list(mpg$year), FUN = mean) 
means <- as.data.frame(means) 
means$year <- as.numeric(row.names(means)) 
names(means)[1] <- "displ" 

p1 <- 
    ggplot(mpg, aes(x = year, y = displ)) + 
    geom_jitter(aes(color = "points")) + 
    geom_errorbar(data = means, aes(ymin = displ, ymax = displ, 
    color = "mean")) + 
    scale_x_continuous(breaks = c(1998, 2008)) 

p1 

私は私が使用して凡例キーを変更することができ、プロットを得る:

p1 + theme(legend.key = element_rect(fill = NA), 
legend.title = element_blank()) + 
guides(color = guide_legend(override.aes = 
list(shape=c(NA, 16), linetype=c(1, 0), fill = c(NA, NA)))) 

望ましい結果行き方:、しかし Legend keys matching plot

をプロットにはgeom_ribbon()も含まれていますが、同じメソッドが失敗します。

p2 <- 
    ggplot(mpg, aes(x = year, y = displ)) + 
    geom_jitter(aes(color = "points")) + 
    geom_ribbon(aes(ymin = 3, ymax = 4, color = "ribbon"), 
    fill = "green", alpha = 0.5) + 
    geom_errorbar(data = means, aes(ymin=displ, ymax=displ, 
    color="mean")) + 
    scale_x_continuous(breaks = c(1998, 2008)) 

p2 + theme(legend.key = element_rect(fill = NA), 
    legend.title = element_blank()) + 
    guides(color = guide_legend(override.aes = 
    list(shape=c(NA, 16, NA), linetype=c(1, 0, 0), 
    fill = c(NA, NA, "green")))) 

Plot with incorrect legend keys

明確にするために:私はちょうど最初のプロットのようなストレート赤い線、境界線なし、なし対角線として表示する平均値を表す凡例キーをしたいです。

(別のデータフレームを作成する代わりにstat_summary()を使用することができますが、実際のプロジェクトでは機能しません)。

任意のアドバイスのおかげで、

ラッセ


+0

あなたはaes' 'リボンの色を設定するために_必要_ですか? – Axeman

+0

そうだと思います。リボンが何を伝えているのか伝説が必要です。私の知る限り、これを行う唯一の方法は 'aes'に定数' color'を作成することです。 –

+0

代わりにfillを使用すると、凡例の行は避けられます。 – Axeman

答えて

3

これは、ハッキングのビットかもしれないが、私はgeom_ribbonから凡例を除去し、ポイントタイプ(PCH = 15として、リボンの色を追加)伝説の中で。 色はまだ完全ではありませんが、私はあなたが管理できると確信しています。

p2 <- 
    ggplot(mpg, aes(x = year, y = displ)) + 
    geom_jitter(aes(color = "points")) + 
    geom_ribbon(aes(ymin = 3, ymax = 4, color = "ribbon"), 
       fill = "green", alpha = 0.5, show.legend = FALSE) + 
    geom_errorbar(data = means, aes(ymin=displ, ymax=displ, 
            color="mean")) + 
    scale_x_continuous(breaks = c(1998, 2008)) 

p2 + theme(legend.key = element_rect(fill = NA), 
      legend.title = element_blank()) + 
    guides(color = guide_legend(override.aes = 
           list(shape=c(NA, 16, 15), linetype=c(1, 0, 0), 
            color = c("red", "green", "green"), 
            alpha = c(1,1,.5), 
            size = c(1,2,6)))) 

Plot

+0

ありがとうございます。コードを実行すると、プロットが表示されません。私は緑の塗りつぶしの3つの伝説のキーをすべて取得しますか? –

+0

geom_ribbonのshow.legendも変更しましたか? – Wietze314

+0

はい。 'show.legend = FALSE'を含め、コードをコピーして貼り付けました。 は、私が実行している: Rバージョン3.2.2(2015年8月14日) プラットフォーム:x86_64版-W64-MINGW32/x64(64ビット) の下で実行します。Windows 7のx64のService Pack 1 (7601をビルドします) ggplot2_1.0.1 ありがとうございました。@ Wietze314 –

関連する問題