2015-10-02 86 views
1

我无法在水平barplot顶部的绘图上获取间距。这是相同的一般问题在这里描述: http://www.r-bloggers.com/adding-lines-or-points-to-an-existing-barplot/R水平barplot与对齐情节ontop

但我试图使用“阴谋”,而不是“点”或“线”。有没有使用阴谋获得酒吧的间距和点匹配的技巧?

Misaligned points and bars example

代码:

barplot(df$DIC_mM,col=scalegreen, xlab="DIC mM", horiz=TRUE, xlim=c(0,0.7), 
     col.axis="white", col.lab="white", axes=FALSE, border="white") 
axis(1,line=1,col="white",col.ticks="white",col.axis="white") 
par(new = TRUE) 
plot(df$d13DIC,df$Order, type="p", axes = FALSE, bty = "n", xlab ="", 
     col="deepskyblue2", lwd=5, xlim=c(-50,170), lend=2, col.lab="white", ylab="") 
axis(3,at = c(-50,0,50,100,150), line=1, col="deepskyblue2", col.ticks="deepskyblue2", 
     col.axis="deepskyblue2") 
mtext(expression(paste(delta ^{13},'DIC'," \u0028","\u2030","\u0029")), 3, 
     line=-0.5,at=50,col="deepskyblue2", cex=0.75) 
+0

在这里阅读您可以如何控制条形图之间的宽度和间距, https://stat.ethz.ch/R-manual/R-devel/library/graphics/html/barplot.html – fnd

+1

或使用rect()作为散点图的相同尺度上的绘图条 – fnd

+1

[This SO answer]( http://stackoverflow.com/a/22341228/496488)可能会有所帮助。 – eipi10

回答

1

是否有一个理由,为什么你不希望使用points加点?如果您愿意使用points,您可以这样做:

创建barplot并将条的y坐标保存为y。您还没有提供的样本数据,所以我将使用内置的mtcars数据帧:

y = barplot(mtcars$mpg[1:10], horiz=TRUE) 

现在添加点。我们使用y作为y的值,因为这些都是各条的中点的坐标:

points(sqrt(mtcars$mpg[11:20]), y, col="red", pch=16, cex=2) 

enter image description here

当您使用par(new=TRUE),然后再次调用plot,你覆盖了新的情节与一个新的坐标系通常与原始坐标系不同。

0

这是什么工作,在此基础上通过后建议eipi10:midpoints returned by barplot function do not actually line up with midpoints of bars

MP < -barplot(DF $ DIC_mM,山坳= scalegreen,xlab = “DIC毫”,HORIZ = TRUE,XLIM = c(0,0.7),col.axis =“white”,col.lab =“white”,axes = FALSE,border =“white”,ylim = c(0,length(df $ DIC_mM)+2)) 轴(1,line = 1,col =“white”,col.ticks =“white”,col.axis =“white”) par(new = TRUE) plot(df $ d13DIC,mp,type =“p “,axis = FALSE,bty =”n“,xlab =”“,col =”deepskyblue2“,lwd = 5,xlim = c(-50,170),lend = 2,col.lab =”white“,ylab =” “,ylim = c(0,长度(df $ DIC_mM)+2)) 轴(3,at = c(-50,0,50,100,150),l (表达式(paste(delta^{13},'DIC',“\ u0028”,“\ n”), ),3,line = -0.5,at = 50,col =“deepskyblue2”,cex = 0.75)