[英]R geom_tile ggplot2 what kind of stat is applied?
我使用geom_tile()
在同一张图上绘制了3个变量...
tile_ruined_coop<-ggplot(data=df.1[sel1,])+
geom_tile(aes(x=bonus, y=malus, fill=rf/300))+
scale_fill_gradient(name="vr")+
facet_grid(Seuil_out_coop_i ~ nb_coop_init)
tile_ruined_coop
我对结果感到满意!
但是,采用哪种统计处理来fill
? 这是一个意思吗?
要绘制填充值的平均值,应在绘制之前汇总值。 scale_colour_gradient(...)在数据级别上不起作用,但在可视化级别上起作用。 让我们从一个玩具数据框开始,以构建一个可重复使用的示例。
mydata = expand.grid(bonus = seq(0, 1, 0.25), malus = seq(0, 1, 0.25), type = c("Risquophile","Moyen","Risquophobe"))
mydata = do.call("rbind",replicate(40, mydata, simplify = FALSE))
mydata$value= runif(nrow(mydata), min=0, max=50)
mydata$coop = "cooperative"
现在,在进行绘图之前,建议您在40个值的组中计算平均值,对于此操作,请使用dplyr包:
library(dplyr)
data = mydata %>% group_by("bonus","malus","type","coop") %>% summarise(vr=mean(value))
拖,您已经准备好使用ggplot2绘制数据集:
library(ggplot2)
g = ggplot(data, aes(x=bonus,y=malus,fill=vr))
g = g + geom_tile()
g = g + facet_grid(type~coop)
结果是:
确保填充值恰好是您的值的平均值。
这是您所期望的吗?
如文档所示,它使用stat_identity
。 您可以轻松地进行测试:
DF <- data.frame(x=c(rep(1:2, 2), 1),
y=c(rep(1:2, each=2), 1),
fill=1:5)
# x y fill
#1 1 1 1
#2 2 1 2
#3 1 2 3
#4 2 2 4
#5 1 1 5
p <- ggplot(data=DF) +
geom_tile(aes(x=x, y=y, fill=fill))
print(p)
如您所见,1/1组合的填充值为5。如果使用因子,则更清楚会发生什么:
p <- ggplot(data=DF) +
geom_tile(aes(x=x, y=y, fill=factor(fill)))
print(p)
如果您想描述均值,我建议在ggplot2之外计算它们:
library(plyr)
DF1 <- ddply(DF, .(x, y), summarize, fill=mean(fill))
p <- ggplot(data=DF1) +
geom_tile(aes(x=x, y=y, fill=fill))
print(p)
这比尝试找出stat_summary
可以以某种方式与geom_tile
stat_summary
播放(我对此表示怀疑)要容易得多。
scale_fill()和geom_tile()不应用统计信息-或最好将stat_identity()应用到您的填充值= rf / 300。 它只计算您使用了多少种颜色,然后使用munsell函数'mnsl()'生成颜色。 如果只想对显示的颜色应用一些统计信息,则应使用:
scale_colour_gradient(trans = "log")
要么
scale_colour_gradient(trans = "sqrt")
改变图块之间的颜色并不是最好的主意,因为这些图必须具有可比性,并且您可以根据它们的颜色来比较这些值。 希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.