2017-02-20 101 views
0

由於大量的觀察結果(N = 10M),我的數據已經以頻率形式進行了總結。來自頻率數據的直方圖

例如,它是在下面的表格(DF):

base <- data.frame(x=round(rnorm(1000,mean=100,sd=10),1)) 
df <- base %>% group_by(x) %>% summarize(n=n()) 

如何使用這些數據來創建GGPLOT2直方圖?我知道我之前沒有手動創建垃圾箱,但我不記得生活中的我如何。我想避免重新轉換數據,例如:

ggplot() + geom_histogram(aes(rep(df$x, df$n))) 

在此先感謝您。

編輯,以提供這排除使用geom_col的/ geom_bar

+2

'ggplot(df,aes(x,n))+ geom_col()'。不要在'aes'中使用'$',而是使用適當的'data'參數。 – Axeman

+0

@Axeman的評論似乎正確;我會添加'width = 1',所以它看起來像一個直方圖,而不是一個barplot:'ggplot(df,aes(x,n))+ geom_col(width = 1)' – scoa

+0

謝謝,但這不能處理非整數數據,並且不允許我設置binwidth。 例如: '基< - data.frame(X =圓形(RNORM(1000,平均= 100,SD = 10),1)) DF <- base %>%GROUP_BY(X)%>%總結(N = n())' –

回答

0

還可以使用geom_bar非整數的例子。

ggplot(df, aes(x, n)) + geom_bar(stat = 'identity') 
+0

如果x值不均勻分佈,這不起作用。此外,它無法處理備用binwidth。例如: 'base < - data.frame(x = round(rnorm(1000,mean = 100,sd = 10),1)) df <- base %>%group_by(x)%>%summarize(n = n ())' –