[英]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.