Проблема в том, что barplot
действительно предназначен для построения категориальных, а не числовых данных, и поэтому он в значительной степени делает свое дело с точки зрения настройки масштаба по горизонтальной оси.Основной способ обойти это - восстановить фактические x-позиции средних точек бара, сохранив результаты barplot
в переменной, но, как вы можете видеть ниже, я не нашел элегантного способа сделать то, чтоВы хотите в базовой графике.Может быть, кто-то еще может сделать лучше.
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, бла-бла-бла :-))