問題は、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、何とか何とか :-) )