gpt4 book ai didi

r - 如何使用 ggplot2 设置图例 alpha

转载 作者:行者123 更新时间:2023-12-03 05:20:44 24 4
gpt4 key购买 nike

我有一张风速与方向的图表,其中有大量的点,因此除了 color=month 之外,我还使用 alpha=I(1/20)

这里是一个代码示例:

library(RMySQL)
library(ggplot2)
con <- dbConnect(...)
wind <- dbGetQuery(con, "SELECT speed_w/speed_e AS ratio, dir_58 as dir, MONTHNAME(timestamp) AS month, ROUND((speed_w+speed_e)/2) AS speed FROM tablename;");

png("ratio-by-speed.png",height=400,width=1200)
qplot(wind$dir,wind$ratio,ylim=c(0.5,1.5),xlim=c(0,360),color=wind$month,alpha=I(1/30),main="West/East against direction")
dev.off()

这会产生一个不错的图表,但我的问题是图例的 alpha 也是 1/30,这使得它不可读。有没有办法可以强制图例为 1 alpha?

这是一个例子: Example Graph

最佳答案

更新随着版本 0.9.0 的发布,现在可以使用指南中的override.aes覆盖图例中的美学值功能。因此,如果您将这样的内容添加到您的绘图中:

+ guides(colour = guide_legend(override.aes = list(alpha = 1)))

应该可以了。

<小时/>

我通过使用数据的空子集对 geom 进行重复调用并使用该调用中的图例来解决这个问题。不幸的是,如果数据框实际上是空的(例如,您从 subset(diamonds,FALSE) 获得的数据),它就不起作用,因为 ggplot2 似乎对待这种情况与对待 NULL 代替数据框。但是,我们可以通过获取只有一行的子集并将其在绘图维度之一上设置为 NaN 来获得相同的效果,这将阻止它被绘制。

基于 Chase 的示例:

# 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)

关于r - 如何使用 ggplot2 设置图例 alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5290003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com