我想使用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?(而不是告诉它要缩放到哪个范围)
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)
答案 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()