第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在R的ggplot2中一起使用stat_function和facet_wrap

在R的ggplot2中一起使用stat_function和facet_wrap

我正在嘗試使用ggplot2繪制晶格類(lèi)型數(shù)據(jù),然后在樣本數(shù)據(jù)上疊加正態(tài)分布以說(shuō)明基礎(chǔ)數(shù)據(jù)離正態(tài)有多遠(yuǎn)。我想讓普通dist位于頂部,以具有與面板相同的均值和stdev。這是一個(gè)例子:library(ggplot2)#make some example datadd<-data.frame(matrix(rnorm(144, mean=2, sd=2),72,2),c(rep("A",24),rep("B",24),rep("C",24)))colnames(dd) <- c("x_value", "Predicted_value",  "State_CD")#This workspg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) +  facet_wrap(~State_CD)print(pg)一切都很好,并產(chǎn)生了一個(gè)很好的數(shù)據(jù)三面板圖。如何在頂部添加法線dist?看來(lái)我會(huì)使用stat_function,但是失敗了:#this failspg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) + stat_function(fun=dnorm) +  facet_wrap(~State_CD)print(pg)似乎stat_function與facet_wrap功能不兼容。我怎樣才能使這兩個(gè)打得更好?- - - - - - 編輯 - - - - -我嘗試從以下兩個(gè)答案中整合想法,但我仍然不存在:使用兩個(gè)答案的組合,我可以一起破解:library(ggplot)library(plyr)#make some example datadd<-data.frame(matrix(rnorm(108, mean=2, sd=2),36,2),c(rep("A",24),rep("B",24),rep("C",24)))colnames(dd) <- c("x_value", "Predicted_value",  "State_CD")DevMeanSt <- ddply(dd, c("State_CD"), function(df)mean(df$Predicted_value)) colnames(DevMeanSt) <- c("State_CD", "mean")DevSdSt <- ddply(dd, c("State_CD"), function(df)sd(df$Predicted_value) )colnames(DevSdSt) <- c("State_CD", "sd")DevStatsSt <- merge(DevMeanSt, DevSdSt)pg <- ggplot(dd, aes(x=Predicted_value))pg <- pg + geom_density()pg <- pg + stat_function(fun=dnorm, colour='red', args=list(mean=DevStatsSt$mean, sd=DevStatsSt$sd))pg <- pg + facet_wrap(~State_CD)print(pg)這真的很近...除了正常的dist繪圖有問(wèn)題之外:在此處輸入圖片說(shuō)明我在這里做錯(cuò)了什么?
查看完整描述

3 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

stat_function旨在在每個(gè)面板中覆蓋相同的功能。(沒(méi)有明顯的方法可以使函數(shù)的參數(shù)與不同的面板匹配)。


正如伊恩(Ian)所建議的那樣,最好的方法是自己生成法線,并將其繪制為單獨(dú)的數(shù)據(jù)集(這是您之前出錯(cuò)的地方-合并對(duì)于這個(gè)示例來(lái)說(shuō)沒(méi)有意義,如果仔細(xì)看,您會(huì)看到這就是為什么您會(huì)得到奇怪的鋸齒圖案)。


解決問(wèn)題的方法如下:


dd <- data.frame(

  predicted = rnorm(72, mean = 2, sd = 2),

  state = rep(c("A", "B", "C"), each = 24)


grid <- with(dd, seq(min(predicted), max(predicted), length = 100))

normaldens <- ddply(dd, "state", function(df) {

  data.frame( 

    predicted = grid,

    density = dnorm(grid, mean(df$predicted), sd(df$predicted))

  )

})


ggplot(dd, aes(predicted))  + 

  geom_density() + 

  geom_line(aes(y = density), data = normaldens, colour = "red") +

  facet_wrap(~ state) 


查看完整回答
反對(duì) 回復(fù) 2019-11-13
?
冉冉說(shuō)

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

我認(rèn)為您需要提供更多信息。這似乎可行:


 pg <- ggplot(dd, aes(Predicted_value)) ## need aesthetics in the ggplot

 pg <- pg + geom_density() 

 ## gotta provide the arguments of the dnorm

 pg <- pg + stat_function(fun=dnorm, colour='red',            

            args=list(mean=mean(dd$Predicted_value), sd=sd(dd$Predicted_value)))

 ## wrap it!

 pg <- pg + facet_wrap(~State_CD)

 pg

我們?yōu)槊總€(gè)面板提供相同的均值和sd參數(shù)。讀者可以練習(xí)獲得面板特定的平均值和標(biāo)準(zhǔn)偏差*;)


'*'換句話說(shuō),不確定如何完成...


查看完整回答
反對(duì) 回復(fù) 2019-11-13
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果您不想“手工”生成正態(tài)分布線圖,仍要使用stat_function并排顯示圖形-那么您可以考慮使用在“ Cookbook for R”上發(fā)布的“ multiplot”函數(shù)替代facet_wrap。您可以從此處將多圖代碼復(fù)制到您的項(xiàng)目中。


復(fù)制代碼后,請(qǐng)執(zhí)行以下操作:


# Some fake data (copied from hadley's answer)

dd <- data.frame(

  predicted = rnorm(72, mean = 2, sd = 2),

  state = rep(c("A", "B", "C"), each = 24)


# Split the data by state, apply a function on each member that converts it into a 

# plot object, and return the result as a vector.

plots <- lapply(split(dd,dd$state),FUN=function(state_slice){ 

  # The code here is the plot code generation. You can do anything you would 

  # normally do for a single plot, such as calling stat_function, and you do this 

  # one slice at a time.

  ggplot(state_slice, aes(predicted)) + 

    geom_density() + 

    stat_function(fun=dnorm, 

                  args=list(mean=mean(state_slice$predicted), 

                            sd=sd(state_slice$predicted)),

                  color="red")

})


# Finally, present the plots on 3 columns.

multiplot(plotlist = plots, cols=3)


查看完整回答
反對(duì) 回復(fù) 2019-11-13
  • 3 回答
  • 0 關(guān)注
  • 2491 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)