2016-05-12 53 views
0

這可能是一個非常簡單的問題,但我現在一直在使用Google和實驗幾個小時,卻找不到答案。這個問題與How to Plot a Pre-Binned Histogram In R不同,因爲這是關於調整bin大小而不是使用預先計算的計數。如何使用已有的計數生成直方圖?

我拉的數據爲R從PostgreSQL表:

mystuff<-sqldf("select foo, count(bar) from mytable group by foo order by count desc;")

給予下列數據框中的內容爲mystuff

 foo  count 
1 gamma 39535 
2 delta 21053 
3 alpha 17919 
4 beta 14930 

foo和數據庫中的酒吧都是字符串。

str(mystuff) 
'data.frame': 9 obs. of 2 variables: 
$ foo: chr "alpha" "beta" "gamma" "delta" ... 
$ count : num 17919 14930 39535 21053 4262 ... 

我則想要做的就是情節顯示每個富(我覺得一個條形圖是這裏的正確的事情,而不是一個直方圖)頻率的條形圖。但是當然R堅持自己的foo計數,對於每個類別來說都是1。我想要做的是使用我精心提供的計數。

我已經得到了它使用的工作如下:

mystuff<-sqldf("select foo, 1 as count from mytable;") 
mystuff$foo<-as.factor(mystuff$foo) 
with(mystuff, Barplot(letter, xlab="foo", ylab="Frequency")) 
換句話說

,通過設置了一排每一個foo和1反對的計數數據幀(!)。但是,使用SQL計數肯定會有一個更簡單的方法。所以我的問題是:這個更簡單的方法是什麼?

+0

可能[如何繪製預分級直方圖在R](http://stackoverflow.com/questions/3789260/how-to-plot-a-pre-binned-histogram-in-r) – theArun

回答

1

您可以使用以下方法非常艾麗斯地繪製。例如檢查這些。

> x <- data.frame(foo = letters[1:5],count = runif(5,1,10)) 
> 
> x 
    foo count 
1 a 8.788269 
2 b 3.832541 
3 c 1.964557 
4 d 9.505890 
5 e 2.924173 


barplot(height = x$count,names.arg = x$foo,) 

enter image description here

或用ggplot2

library(ggplot2) 
ggplot(x,aes(foo,count))+geom_bar(stat="identity") 

enter image description here

+0

酷!非常感謝!是的,現在你告訴我很容易,但我無法在任何地方找到這些信息。還要感謝Gaurav,但這個答案更簡單。 – donnek

1
require(ggplot2) 

d <- data.frame(foo = as.factor(seq(1:50)),count = abs(round(rnorm(50)*10))) 
ggplot(data=d,aes(x=foo,y=count))+geom_bar(stat="identity") 

enter image description here