12

2つの異なるプロットをオーバーレイしようとしています。1つはgeom_boxplot、もう1つですgeom_jitter。それぞれに独自のカラースケールを持たせたいです。しかし、2番目のカラースケールを追加すると、エラーが発生します

 "Scale for 'fill' is already present. Adding another scale for 'fill', 
  which will replace the existing scale."

私は何か間違ったことをしていると思います。何かアドバイスをいただければ幸いです

これは私の作業コードの大まかな例です:

P <-  ggplot(dat) + 
          geom_boxplot(aes(x=ve, y=metValue, fill=metric), alpha=.35, w=0.6, notch=FALSE, na.rm = TRUE) + 
          scale_fill_manual(values=cpalette1) + 
          geom_hline(yintercept=0, colour="#DD4466", linetype = "longdash") +
          theme(legend.position="none")

P + geom_jitter(dat2, aes(x=ve, y=metValue, fill=atd), 
                size=2, shape=4, alpha = 0.4, 
                position = position_jitter(width = .03, height=0.03), na.rm = TRUE) + 
              scale_fill_manual(values=cpalette2)

datdat2スキーマは同じですが、値が異なります。

オーバーレイグラフに対処するいくつかの例を見つけましたが、この特定の懸念に対処するように見えるものはありませんでした。

4

1 に答える 1

12

まず、例と同じ名前の2つのサンプルデータフレームを作成しました。

dat<-data.frame(ve=rep(c("FF","GG"),times=50),
                metValue=rnorm(100),metric=rep(c("A","B","D","C"),each=25),
                atd=rep(c("HH","GG"),times=50))
dat2<-data.frame(ve=rep(c("FF","GG"),times=50),
                metValue=rnorm(100),metric=rep(c("A","B","D","C"),each=25),
                atd=rep(c("HH","GG"),times=50))

の色は引数でも設定できるのでfill=、引数を使う必要はないと思います。次に、を使用して値を設定できます。単に色の名前を使用する代わりに。geom_jitter()shape=4colour=scale_colour_manual()cpallete

P <-  ggplot(dat) + 
  geom_boxplot(aes(x=ve, y=metValue, fill=metric), alpha=.35, w=0.6, notch=FALSE, na.rm = TRUE) +  
  geom_hline(yintercept=0, colour="#DD4466", linetype = "longdash") +
  scale_fill_manual(values=c("red","blue","green","yellow"))+
  theme(legend.position="none")

P + geom_jitter(data=dat2, aes(x=ve, y=metValue, colour=atd), 
                size=2, shape=4, alpha = 0.4, 
                position = position_jitter(width = .03, height=0.03), na.rm = TRUE) + 
                scale_colour_manual(values=c("red","blue"))

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

于 2013-02-21T20:39:33.240 に答える