Update随着版本 0.9.0 的发布,现在可以使用以下命令覆盖图例中的美学值override.aes
in the guides
功能。因此,如果您将这样的内容添加到您的图中:
+ guides(colour = guide_legend(override.aes = list(alpha = 1)))
应该可以。
我通过使用数据的空子集并使用该调用中的图例对 geom 进行重复调用来解决此问题。不幸的是,如果数据框实际上是空的(例如,正如您从subset(diamonds,FALSE)
)因为 ggplot2 似乎对待这种情况与对待它一样NULL
代替数据框。但是我们可以通过取只有一行的子集并将其设置为来获得相同的效果NaN
在绘图维度之一上,这将阻止其被绘制。
基于蔡斯的例子:
# Alpha parameter washes out legend:
gp <- ggplot() + geom_point(data=diamonds, aes(depth, price, colour=clarity), alpha=0.1)
print(gp)
# Full color legend:
dummyData <- diamonds[1, ]
dummyData$price <- NaN
#dummyData <- subset(diamonds, FALSE) # this would be nicer but it doesn't work!
gp <- ggplot() +
geom_point(data=diamonds, aes(depth, price, colour=clarity), alpha=0.1, legend=FALSE) +
geom_point(data=dummyData, aes(depth, price, colour=clarity), alpha=1.0, na.rm=TRUE)
print(gp)