问题是barplot
实际上是为绘制分类数据而设计的,而不是用于数值数据的,因此在设置水平轴刻度方面,它基本上会自作主张。解决这个问题的主要方法是通过将barplot
的结果保存到一个变量中,从而恢复条形图中点的实际x位置,但正如您可以在下面看到的那样,在基础图形中我没有想出一种优雅的方式来实现你想要的效果。也许有人能做得更好。
x = c(1:81)
b <- barplot(x)
head(b)
从这里可以看出实际的中点位置是0.7, 1.9, 3.1, ... 而不是 1, 2, 3 ...
如果你不想将轴从0延伸到100,那么这很快速:
b <- barplot(x)
axis(side=1,at=b[c(20,40,60,80)],labels=seq(20,80,by=20))
这是我在基本图形中尝试的最佳方法:
b <- barplot(x,xlim=c(0,120))
bdiff <- diff(b)[1]
axis(side=1,at=c(b[1]-bdiff,b[c(20,40,60,80)],b[81]+19*bdiff),
labels=seq(0,100,by=20))
你可以尝试这个方法,但是生成的条形图可能不太美观:
plot(x,type="h",lwd=4,col="gray",xlim=c(0,100))
或者在 ggplot
中:
library(ggplot2)
d <- data.frame(x=1:81)
ggplot(d,aes(x=x,y=x))+geom_bar(stat="identity",fill="lightblue",
colour="gray")+xlim(c(0,100))
大多数统计图形专家会告诉你,用点或线而不是条形图(非数据墨迹,Tufte等等)来绘制定量(x,y)数据更好。