2014-09-12 371 views
0

我想使用barplot在時間單位(x軸)上顯示相對於梯度(y軸)的測量位移。然而,繪圖工作需要能夠定義x軸的長度(從1:366 ==開始,這是我在全部df中所有測量的最小值和最大值) - 以便我生成的所有條形圖具有相同的長度(起點和終點)。另外,我想沿x軸每10個單位有一個標籤。我還沒有設法創造這樣的。一個可重複的例子和我有以下步驟:R barplot x軸長度和標籤

daybeg<-as.numeric(c("291.37561", "75.62574" , "196.37539" , "69.62543" , "93.37560" , 
"107.62561" , "196.62595" , "211.62557" , "174.87560" , "326.87566", 
"224.12542" , "72.12561" , "246.62544" , "61.62574" , "358.37556" , 
"299.12561" , "109.12560" , "83.87560" , "16.87560" , "47.87542")) 

xdisspeed<-as.numeric(c("135.7357914","24.8621089", 
"-216.3525499","159.3480878","124.7417427","-44.1748472", 
"-271.1816785","-14.1738848","-61.0028242","-4.1711081", "-149.8402704","22.5010417", 
" 0.9998611","21.6817234","-38.4359401", "-1116.1317216","145.0873211","222.6752537", 
" 5.2331234","0.9992136")) 

df<-data.frame(daybeg,xdisspeed) 

ord<-df[order(df$daybeg),] 
bpdisplan <- barplot(ord$xdisspeed,axes=T,ylim=c(-1200,1200), 
    names.arg=round(ord$daybeg,0), 
    xlab="Days since 10 January.", axis.lty=1,tcl = 0.25, 
    ylab="Displacement (km)") 
+0

水庫通常沿着一個軸線具有離散值,但在這裏你似乎有兩個連續的值,它似乎並不像你想做任何分檔。觀察'差異(ord $ daybeg)'之間的天數似乎有很大的變化。我不清楚你想要最終產品的樣子。如果不規則間隔(可能重疊的條),你想要一堆嗎?你想要某種針狀圖(即'plot(xdisspeed〜daybeg,ord,type =「h」)'?或者甚至只是一個線圖(即'plot(xdisspeed〜daybeg,ord,type =「l」)) ; abline(h = 0,lty = 2)')? – MrFlick 2014-09-12 20:30:07

+0

感謝您的回答,樣本數據框只是測量的一小部分,實際上數據框有700-1000行(測量日期爲1-366)不規則的間隔和重疊的條是我需要的,並且x軸標籤從1-366,by = 10。plot(xdisspeed〜daybeg,ord,type =「h」,lwd = 5)接近它應該看的就像 – doncarlos 2014-09-12 21:00:42

+0

剛剛將示例中的seq修正爲1:366(從0:366) – doncarlos 2014-09-12 21:05:06

回答

0

據我所知,你所描述的不符合任何形式的barplot的標準描述。如果你只是想畫一堆笨拙postitioned箱,然後

plot(xdisspeed~daybeg, ord, type="n", xaxt="n") 
w<-3 
with(ord, rect(daybeg-w/2, 0, daybeg+w/2,xdisspeed, col="#eeeeee")) 
axis(1, at=seq(0, 355, by=10), cex.axis=.60) 

enter image description here

注意的是,R都不會畫,默認情況下重疊的軸標籤,讓我減少了字體大小得到它的打印每10個,但這將取決於您的特定圖形設備和輸出大小,以確定哪些值將實際工作。

+0

這是我正在尋找的解決方案此外,如果barplot用於我的數據表示,情節可能更合適。 – doncarlos 2014-09-12 22:32:29