21

基本的に、ggplotを使用してRで以下に示す最初のプロットを作成したいと思いますが、両方のオブジェクトが同じグラフ上にあります(ファセットラッピングなし)。

私のデータ構造を模倣した最小限の例を考えてみましょう。

library(reshape2)
library(ggplot2)
x <- seq(1, 5, length = 100)
y <- replicate(10, sin(2 * pi * x) + rnorm(100, 0, 0.3), "list")
z <- replicate(10, sin(2 * pi * x) + rnorm(100, 5, 0.3), "list")
y <- melt(y)
z <- melt(z)
df <- data.frame(x = y$Var1, rep = y$Var2, y = y$value, z = z$value)
dat <- melt(df, id = c("x", "rep"))

私はそれをプロットすることができます

ggplot(dat) + geom_line(aes(x, value, group = rep, color = variable), 
    alpha = 0.3) + facet_wrap(~variable)

そして、


(出典:carlboettiger.info

しかし、ファセットラッピングを削除しようとすると、色と変数でグループ化する必要があると思いましたが、代わりにデータが正しく分割されないため、意味がありません。


(出典:carlboettiger.info

4

2 に答える 2

34

問題は、group美学が標準のグループ化プロトコルをオーバーライドすることです。これは、で説明されているプロット内のすべての離散変数の相互作用に?group含まれていません。

したがって、ファセットなしでプロットを機能させるには、相互作用を手動で指定する必要があります

ggplot(dat) + geom_line(aes(x, value, group = interaction(rep,variable), color = variable), alpha = 0.3) 

ここに画像の説明を入力してください

美学のアルファ値を上書きするには、を使用しますguide_legend(override.aes = ...))。この情報は、以下のリンクをたどって見つけることができます?guides?guide_legend

例えば

ggplot(dat) + geom_line(aes(x, value, group = interaction(rep,variable), color = variable), 
                           alpha = 0.3) + 
  scale_colour_discrete(guide = guide_legend(override.aes = list(alpha = 1)))

ここに画像の説明を入力してください

于 2012-12-18T23:03:49.997 に答える
3

repと変数をグループに貼り付けることができます。

ggplot(dat) + geom_line(aes(x, value, group = paste(variable, rep), color = variable), 
                    alpha = 0.3) 
于 2012-12-18T23:06:49.600 に答える