问题是它barplot
实际上是为绘制分类数据而不是数字数据而设计的,因此它在设置水平轴刻度方面几乎做了自己的事情。解决此问题的主要方法是通过将结果保存barplot
到变量来恢复条形中点的实际 x 位置,但正如您在下面看到的,我还没有想出一种优雅的方式来做您想做的事情基础图形。也许别人可以做得更好。
x = c(1:81)
b <- barplot(x)
## axis(side=1,at=c(0,20,40,60,80),labels=c(20,40,60,80,100))
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))
大多数统计图形书呆子会告诉您,用点或线而不是条形图更好地绘制定量(x,y)数据(非数据墨水,Tufte,等等等等 :-))