条形图中xlim和x轴不同?

3
我正在使用基础图形叠加两个条形图(因为它们具有不同的比例尺,到目前为止在ggplot上做这件事情一直是一场噩梦)来展示以下数据:
> str(pidf)
'data.frame':   1300 obs. of  7 variables:
$ spec1  : num  0.00192 0.00213 0.00151 0.00234 0.00133 ...
$ spec2  : num  0.00241 0.00278 0.00189 0.00264 0.00155 ...
$ spec3  : num  0.00231 0.00262 0.00187 0.00274 0.00165 ...
$ spec4  : num  0.00209 0.0026 0.00166 0.00225 0.00165 ...
$ spec5  : num  0.0025 0.00285 0.00188 0.00285 0.00181 ...
$ numbers: int  1 2 3 4 5 6 7 8 9 10 ...
$ ratios : num  0.59 0.642 0.544 0.625 0.567 ...

这是我绘制图形的代码:
par(mar = c(5,5,2,5))
barplot(pidf$ratios, col = "skyblue", ylim = c(0, 1),
ylab = "Sequenced Base Ratios", border = NA, main = "Chlorocebus tantalus")
axis(1, at = round(seq(0, 1300, 100)))
par(new = T)
barplot(pidf$spec5, col = "chartreuse3", border = NA, ylim = c(0, 0.003),
    axes = F, xlab = NA, ylab = NA)
axis(side = 4)
mtext(side = 4, line = 3, expression(pi))
legend("topright", legend=c(expression(pi), "Ratios"), cex = 0.75,
    pch=c(15, 15), col=c("chartreuse3", "skyblue"))

当我运行这段代码时,x轴比数据短。 如果我在第一个图中指定xlim = c(1,1300),那么我得到的结果是这样的: 有人知道为什么会发生这种情况以及如何解决吗?我猜可能与par值有关,但我需要这些值才能为右侧绘制的轴留出空间。提前感谢!
2个回答

5

我认为问题在于条形图没有自动定位到单位间隔。默认情况下,barplot 在条形之间添加了0.2个单位的间隙(请参阅?barplot,搜索“space”)。例如,如果我们有20个条形,x轴的右侧边缘将在x=24处:

z <- 1:20
barplot(z)
axis(side=1,at=c(0,24))

在此输入图片描述

对于您的应用程序,最简单的方法可能是通过指定space=0来适配此内容:

barplot(z,space=0)
axis(side=1,at=c(0,20))

enter image description here


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接