2014-12-04 186 views
-2

如何使用帶有x軸的R語言創建堆積條形圖爲CODE,TYPE堆疊在一個CODE中,並且y軸爲COUNT。自從最近2周以來我已經嘗試過了,我從來沒有得到正確的條形圖。如何繪製使用R的堆積條形圖

COUNT  TYPE CODE 
    31  GJ  PUM 
    161  GO  PUM 
    12  GL2  PUM 
    9  GJ  SOP 
    8  GO  SOP 
    8  GL2  SOP 
    456  OL  SOP 
    912  KL  SKQ 
+1

你嘗試過什麼,和爲什麼會讓你不滿意?我建議仔細閱讀'barplot'。 – jbaums 2014-12-04 08:57:13

+0

我嘗試了一個方法從這個鏈接http://www.thecoatlessprofessor.com/programming/creating-stacked-barplot-and-grouped-barplot-in-r-using-base-graphics-no-ggplot2,當我這樣做,由於樣本中的數據有一種模式,因此我的數據沒有固定的模式,所以數據將無法正確排列。 它會生成堆疊條形圖,但圖形中的數據不能反映原始數據。我對這種R語言非常陌生。 @jbaums – 2014-12-04 09:06:06

回答

1

這是我怎麼會做它用base R.

d <- read.table(text='COUNT  TYPE CODE 
    31  GJ  PUM 
    161  GO  PUM 
    12  GL2  PUM 
    9  GJ  SOP 
    8  GO  SOP 
    8  GL2  SOP 
    456  OL  SOP 
    912  KL  SKQ', header=T) 

# Choose some colours 
library(RColorBrewer) 
colrs <- brewer.pal(nlevels(d$TYPE), 'Set3') 

# Plot that 
par(mar=c(4, 4, 2, 6)) 
tab <- xtabs(COUNT ~ TYPE + CODE, d) 
barplot(tab, las=1, col=colrs, yaxp=c(0, 1000, 5), ylim=c(0, 1000), ylab='Count') 
box() 

# Clipping off for legend 
par(xpd=TRUE) 
legend(par('usr')[2], par('usr')[4], row.names(tab), bty='n', fill=colrs) 

enter image description here

+0

感謝您的解決方案。實際上,我得到的數據來自我的數據庫使用sqlQuery函數的查詢。如果查詢中的數據與您使用read.table函數一樣,我該如何檢索數據? @jbaums – 2014-12-04 09:30:20

+0

@SyazwanZakaria - 看我的編輯。如果你的數據在矩陣或數據框中,你應該能夠將一個公式傳遞給描述計數和兩個變量之間關係的'xtabs'。如果它仍然不起作用,你應該在你的問題中使數據結構更加清晰。 – jbaums 2014-12-04 09:36:29

+0

這是我的查詢 test < - sqlQuery(con,「select count,type,code from ov group by code,type order by code,type」),結果是我在問題中發佈的內容。 如何從read.table函數中檢索該查詢中的數據。 @jbaums – 2014-12-04 09:37:34

3

我會建議使用geom_barggplot

# your data 
df <- read.table(text='COUNT  TYPE CODE 
    31  GJ  PUM 
    161  GO  PUM 
    12  GL2  PUM 
    9  GJ  SOP 
    8  GO  SOP 
    8  GL2  SOP 
    456  OL  SOP 
    912  KL  SKQ', header=TRUE) 
# plot 
require(ggplot2) 
p <- ggplot(df, aes(CODE, COUNT, fill=TYPE)) + 
    geom_bar(stat='identity') + 
    theme_bw(base_size=16) 
print(p) 
+0

不錯的解決方案。實際上,我得到的數據來自我的數據庫使用sqlQuery函數的查詢。我可以通過使用read.table函數知道如何從查詢中檢索數據嗎? @shadow – 2014-12-04 09:18:01

+0

這是我的查詢 test < - sqlQuery(con,「select count,type,code from ov group by code,type order by code,type」) 並且結果是我在問題中發佈的內容。我如何通過使用read.table函數從查詢中檢索數據。 @shadow – 2014-12-04 09:35:45