0

我正在尝试在辅助 y 轴上显示用线图覆盖的条形图。我在这里遵循示例:http ://robjhyndman.com/hyndsight/r-graph-with-two-y-axes/ 。我成功显示了我的数据,但是 y1 和 y2 轴的开头不是从公共基础(在公共 0 上)开始,y2 位于更上方。

如何在公共基础上正确对齐 y1 和 y2 轴?我可以将我的 y1 和 y2 轴都扩展为相同的尺寸吗?而且,如何调整条中间点的位置?

我的虚拟数据:

x <- 1:5
y1 <- c(10,53,430,80,214)
y2 <- c(0.2,1.2,3.3, 3.5, 4.2)

# create new window 
windows()

# set margins
par(mar=c(5,4,4,5)+.1)
# create bar plot with primary axis (y1)
barplot(y1,  ylim= c(0,500))
mtext("y1",side=2,line=3)

# add plot with secondary (y2) axis
par(new=TRUE)
plot(x, y2,,type="b",col="red",xaxt="n",yaxt="n",xlab="",ylab="", ylim= c(0,10), lwd = 2, lty = 2, pch = 18)
axis(4)
mtext("y2",side=4,line=3)

在此处输入图像描述

4

1 回答 1

4

当您查看文档时,par()您会找到选项xaxsyaxs您可以使用这些选项控制两个轴的间隔计算。par(yaxs = 'i')在您的命令之前调用plot()或直接使用选项作为参数plot()将通过以下方式更改间隔计算:

样式“i”(内部)只是找到一个带有漂亮标签的轴,该标签适合原始数据范围。

TO关于他的评论的其他信息:

为了使线的点居中lines,您可以使用 barplot 创建的 x 轴:

par(mar=c(5,4,4,5)+.1)
# create bar plot with primary axis (y1)
par(xpd = F)
ps <- barplot(y1,  ylim= c(0,500), xpd = F)
axis(4, at = 0:5 * 100, labels = 0:5 * 2)  # transform values
mtext('y1',side = 2, line = 3)
lines(x = ps, y = y2 * 50, type = 'b', col = 'red') # transform values
于 2017-03-14T10:56:37.143 回答