I've been noticing that if I save a barplot object:
y <- seq(10,50,10) mp <- barplot(y)
and overlay a line
par(new=T) plot(mp, y, type="o")
then the points on the new plot do not line up with the middle of the bars in the bar plot.
However, if I don't use par(new=T) and instead do this:
mp <- barplot(y) lines(mp, y) points(mp,y)
then the points line up with the middle of the bars.
I want to plot the new line plot on a second axis, so I'd need to do something like par(new=T). Does anyone know how to have the midpoints line up properly?
After brief investigation, I realized that the problem is that the x-axis of the two plots don't match up. See the code & plot below to see the problem.
y <- seq(10, 50, 10) mp <- barplot(y) axis(1) #barplot will use left and bottom axes par(new = T) plot(mp, y * 4, type = "o", axes = F) axis(4) axis(3) # this plot will use top and right axes
<img src="https://i.stack.imgur.com/tgsHF.png" alt="enter image description here">
So to fix this problem, you need to specify common
xlim parameter for both plots.
mp <- barplot(y, xlim = c(0, length(y) + 1)) par(new = T) plot(mp,y*4,type='o', axes = F,ylab="", xlim=c(0,length(y)+1) ) + axis(4) + mtext("y*4",4)
<img src="https://i.stack.imgur.com/IIW9T.png" alt="enter image description here">