2013-09-22 84 views
0

非常愚蠢的問題,但我無法找到答案在線:多個barplots保持相同的軸和相同的條寬

需要繪製多個barplots這樣在一起:

i=1:4 
main = paste ("Location ", i) 

windows() 
par(mfrow=c(2,2)) 
a<-table(c(rep(10, 6), rep(4, 32))) 
b<-table(c(rep(9, 6), rep(10, 32), rep(11,4))) 
c<-table(c(rep(10, 6))) 
d<-table(c(rep(10, 3), rep(9, 3), rep(8, 5))) 

barplot(a, main=main[1], xlab='RSSI') 
barplot(b, main=main[2], xlab='RSSI') 
barplot(c, main=main[3], xlab='RSSI')#, width=0.5 
barplot(d, main=main[4], xlab='RSSI') 

1 )是否有可能保持軸的比例不變,這樣每張圖都是一樣的?

2)是否可以在圖中保持條寬不變?我嘗試寬度,但它似乎並沒有工作,我想它有恆定和固定之間的圖形。

感謝

編輯:2)我知道你可以加個零,這樣所有的圖形具有相同數目的介入類,但由於我是在我策劃的循環,我已刪除,使例如更簡單,我寧願用另一種方式來做到這一點,如果可能的話。 再次感謝

+0

一個小側面說明一個小例子:也許我誤解你,但不會是更容易比較不同的位置,如果你有相同的類每個位置。對不起,如果我誤解你的目標。 – Henrik

+0

我不知道我完全理解你,你問我爲什麼不「反轉x和y」?如果是這樣,我對離散變量的局部行爲感興趣,檢查值= 44在空間上與值= 45相比的行爲不僅僅是一種感興趣的現象。我明白了嗎? – Irene

+0

對不起,如果我不清楚。在你寫的問題中,你知道如何讓「所有圖形具有相同數量的類」,但是你在示例中刪除了零個類。我只是認爲,如果您對每個位置都有相同的一組類別,那麼比較不同級別的RSSI的計數可能會更容易一些,即包含零計數的RSSI類也是如此。但是,我可能會誤解你的總體目標。乾杯。 – Henrik

回答

0

看一看在?barplot描述的xlimylim參數:(xlimwidth互相影響)

barplot(a, main=main[1], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32)) 
barplot(b, main=main[2], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32)) 
barplot(c, main=main[3], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32)) 
barplot(d, main=main[4], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32)) 

enter image description here

+0

不知道我錯過了,謝謝! – Irene

1

可能是隻爲你的例子說明你將每個繪圖的數據保存在不同的向量中。無論如何,如果地點的數量要大得多,你很快就會讓你的工作區變得雜亂無章,你必須多次撥打tablebarplot

無論您使用base R函數還是ggplot來繪圖,使用數據幀中存儲的數據都會更容易。此外,如果在每個圖中使用每個位置的相同類別集合,即包括具有零個計數的RSSI類別,則在不同位置之間比較不同級別的RSSI的計數可能更容易。您也可以在不同位置使用y軸的相同比例。這裏是ggplot

library(ggplot2) 

# create a data frame with the data in your vectors 
# 'x' is the value, and 'loc' the location of each registration 
df <- data.frame(x = c(rep(10, 6), rep(4, 32), 
         rep(9, 6), rep(10, 32), rep(11, 4), 
         rep(10, 6), 
         rep(10, 3), rep(9, 3), rep(8, 5)), 
       loc = c(rep("a", 6+32), rep("b", 6+32+4), rep("c", 6), rep("d", 3+3+5))) 

# plot using geom_bar, which default counts the cases for each level of - no need for 'table' 
ggplot(data = df, aes(x = factor(x))) + 
    geom_bar() + 
    facet_wrap(~ loc) 

enter image description here

+0

是的,我正在使用一個數據框,我用向量來儘可能可讀的例子,我仍然努力與ggplot,所以謝謝你的答案! – Irene

+1

@艾琳,很高興幫助。當我開始使用'ggplot'時,我發現它非常有用,可以通過示例[here](http://www.cookbook-r.com/Graphs/)進行工作。祝你好運! – Henrik

+0

+ 1供參考 – Irene