2017-02-20 98 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 ())' –