If you want to force all labels to display, even when they are very close or overlapping, you can "trick" R into displaying them by adding odd and even axis labels with separate calls to the axis
function, as follows:
labs <-c("0
9.3%","1
7.6%","2
5.6%","3
5.1%","4
5.7%","5
6.5%","6
7.3%",
"7
7.6%","8
7.5%","9
7%", "10
6.2%","11
5.2%","12
4.2%",13:27)
n=length(labs)
plot(1:28, xaxt = "n")
axis(side=1, at=seq(1,n,2), labels=labs[seq(1,n,2)], cex.axis=0.6)
axis(side=1, at=seq(2,n,2), labels=labs[seq(2,n,2)], cex.axis=0.6)
You can play with cex.axis
to get the text size that you want. Note, also, that you may have to adjust the number of values in at=
and/or labels=
so that they are equal.
I agree with @PLapointe and @joran that it's generally better not to tamper with R's default behavior regarding overlap. However, I've had a few cases where axis labels looked fine even when they weren't quite a full "m-width" apart, and I hit on the trick of alternating odd and even labels as a way to get the behavior I wanted.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…