簡體   English   中英

使用facet_grid時使用..count的R ggplot2

[英]R ggplot2 using ..count.. when using facet_grid

我在Ubuntu中使用R studio,標准更新的R和ggplot2

我嘗試在ggplot中創建直方圖,並按組分隔數據。

我需要繪圖的y軸來表示由小平面網格分割的子組中每個bin的頻率。

例如,如果我在數據中有兩個條目

a group
1 1
2 2

我需要使用facet_grid按組拆分,然后顯示a有一個1為1的條,它是組1中100%的例子,反之亦然。

我發現這樣做的方法是使用(..count ..)/ sum(.. count)但sum(.. count ..)將計算整個數據框中的頻率並給出我不想要的結果,

我無法找到深度使用..count的好文檔..

關於特殊ggplot變量的問題

關於..count的另一個問題..

文檔中沒有什么非常全面的,

這是我正在使用的示例代碼

df <- data.frame(a = 1:10, b = 1:10, group = c(rep(1,5),rep(2,5)))
p<-ggplot(df) + geom_histogram(aes(x = a, y = (..count..)/sum(..count..))) +  
   facet_grid(group ~ .)

您可以看到y軸將包含0.1作為最高值,我希望它顯示1%值的100%在例如組1中。 等等

編輯:

感謝Jimbou的答案和參考適用於離散數據的精心構建的漫游,請注意我在這里遇到的真正問題是需要使用連續數據,以及分組多個值的箱子,此外,那里沒有關於如何使用..count ..函數執行此操作的正確文檔,因此我認為找到解決方案並且不使用四處走動很重要

這是一個dplyr解決方案。

df%>% group_by(group)%>%mutate(n = n(), prop = n/sum(n))

經過大量的游戲,以及你們給出的非常好的方向,我發現Jimbou和Shayaa的答案之間有一點點補充和融合,還有一些額外的代碼可以很好地運作。

t <- data %>% group_by(group,member,v_rate) %>% tally %>% mutate(f = n/sum(n))

將獲取數據並按組,成員,v_rate進行分組,並將每組的計數除以總和(組中的相對頻率)

比我們想用ggplot2創建直方圖並使用這些值作為直方圖的權重函數,否則這一切都是徒勞的,

 p <- ggplot(t, aes(x = v_rate, weight = f)) + geom_histogram() + facet_grid(group ~ member)

這很棒。

你可以試試:

首先使用ave計算每組的長度:

df$gr_l <- ave(df$a, df$group, FUN = function(x) length(x))

獲得各比例a使用組內by

df$gr_prop <- c(by(df, df$group + df$a, FUN = function(x) length(x$a)/unique(x$gr_l) ))

繪制數據。

ggplot(df, aes(x=a, y=gr_prop)) + 
      geom_bar(stat="identity",position='dodge') + 
      facet_grid(group ~ .)

現在的問題是類似於這個使用的問題ddply或內部ggplot溶液。

試試..density.. 這將使當地大眾與當地人數相比,目前所寫的總體無所不包

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM