2014-09-12 368 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