告诉ggplot不要缩放alpha

时间:2014-03-14 15:09:49

标签: r ggplot2 alpha

我想使用alpha级别的显式值。

head(D)

    x  y group  alpha
  1 1 18     A   0.40   <~~~~
  2 2 18     A   0.44
  3 3 18     A   0.47
  4 1 18     A   0.51
  5 2 21     B   0.55
  6 3 21     B   0.58
  ...

然而,ggplot正在缩放alpha级别。我可以使用scale_alpha_continuous(range=range(D$alpha))覆盖它,但是在以编程方式创建图形时这会成为一种不足。

是否有直接的方法告诉ggplot不要缩放alpha?(而不是告诉它要缩放到哪个范围)

enter image description here

可重复的例子

library(ggplot)
library(gridExtra)
(D <- data.frame(x=rep(1:3, 4), y=rep((6:8)*3, each=4), group=rep(c("A","B", "C"), each=4),  alpha=round(seq(.4, .8, length.out=12), 2)))

P <- ggplot(data=D, aes(x=x, y=y, alpha=alpha)) + geom_bar(stat="identity", fill="blue") + theme(legend.position="bottom") + facet_grid(group ~. )

### Adding  scale_alpha_continuous
P.manually_scaled <- P + scale_alpha_continuous(range=range(D$alpha))

grid.arrange( P + ggtitle("INCORRECT")
             , P.manually_scaled + ggtitle("CORRECT")
             , ncol=2)

1 个答案:

答案 0 :(得分:5)

如果您有实际的alpha,color,...,则值应使用..identity()刻度。这将告诉ggplot()分配数据框中的alpha值,而不是缩放它们。

ggplot(data=D, aes(x=x, y=y, alpha=alpha)) + 
         geom_bar(stat="identity", fill="blue") + 
         facet_grid(group ~. ) +
         scale_alpha_identity()