4

グラフィックの塗りつぶしの透明度を制御するためにアルファを使用しようとしています。alpha関数がscalesパッケージに移動されたことは理解していますが、それでも機能させることができません。

データセット:

library(scales)
library(ggplot2)
Groups <- data.frame(Level=c("High", "Above Average", "Average", "Below Average", "Low"),       
                     Start=c(7.5, 5.5, 4.5, 2.5, .5), End=c(11.5, 7.5, 5.5, 4.5, 2.5)) 
Groups$Start<-as.numeric(as.character(Groups$Start))

d <- data.frame(x=1:10, y=1:10)

basicBox <- ggplot(d, aes(factor(x), y)) + geom_boxplot()
basicBox + 
  geom_rect(aes(NULL, NULL, xmin=Start, xmax=End, fill=Level), ymin=0, ymax=20, data=Groups) + 
  scale_fill_manual(values=alpha(c("red", "blue", "green", "grey", "purple"), 0.2))

同様のコードは、HadleyWickhamのggplot2の86ページにあります。スケールライブラリをロードしないと、Rがアルファ関数を認識しないというエラーが表示されますが、スケールをロードした後でも、アルファを正しく機能させることができません。

4

2 に答える 2

11

私があなたが求めているものを手に入れたら、それは次のようなものになるはずです:

basicBox + 
  geom_rect(aes(NULL, NULL, xmin=Start, xmax=End, fill=Level), 
            ymin=0, ymax=20, data=Groups, alpha=0.2) + 
  scale_fill_manual(values=c("red", "blue", "green", "grey", "purple"))

alpha引数を入れてgeom_rect、関数として使用しませんでした。

于 2012-06-16T22:20:59.713 に答える
1

「アルファを正しく機能させることができない」とはどういう意味かわかりません。あなたのコードは私のためにうまく動きます。

小さな提案:

ggplot(d, aes(factor(x), y)) + 
  geom_rect(aes(NULL, NULL, xmin=Start, xmax=End, fill=Level), 
            alpha = 0.2, ymin=-Inf, ymax=Inf,data=Groups) + 
  geom_boxplot() +
  scale_fill_brewer(palette="Pastel1")
于 2012-06-16T22:20:24.517 に答える