No.01537 Rで棒グラフと折れ線グラフを描く  【波音】 2006/11/06(Mon) 20:44

最終的にはRを使って添付ファイルのような図を描きたいのですが(添付ファイルのはExcelで描いたものです),Rで以下のように記述するとbarplot()とplot()を使っているせいか,y軸の目盛が合ってくれません(ズレてしまいます)。

棒グラフと折れ線グラフを合わせて描くためにはどのようにすれば良いのでしょうか。

mydat<-matrix(c(
54379,65479,80555,78093,17950,17591,30881,44590,60946,
19784,9672,4352,26614,24964,21319,36616,15148,11274),ncol=9,byrow=TRUE)
x<-c(82424,79844,88345,130631,68931,62866,88496,53079,88269)
barplot(mydat,ylim=c(0,140000),beside=TRUE)
par(new=TRUE)
plot(x,ylim=c(0,140000),type="b")

http://zoonek2.free.fr/UNIX/48_R/all.html
http://www.stat.auckland.ac.nz/~paul/RGraphics/rgraphics.html
http://addictedtor.free.fr/graphiques/
などを探してみましたが,このようなグラフは見当たりませんでした。そもそも棒グラフと折れ線を併用して描くようなことはしないものなのでしょうか。。。

fig


No.01538 Re: Rで棒グラフと折れ線グラフを描く  【青木繁伸】 2006/11/06(Mon) 22:36

このあたりでごかんべんを
mydat<-matrix(c(
54379,65479,80555,78093,17950,17591,30881,44590,60946,
19784,9672,4352,26614,24964,21319,36616,15148,11274),ncol=9,byrow=TRUE)
x<-c(82424,79844,88345,130631,68931,62866,88496,53079,88269)
color1 <- "darkblue"
color2 <- "darkred"
color3 <- "darkgreen"
barplot(mydat,ylim=c(0,140000),beside=TRUE,col=c(color1, color2))
axis(1, 1:9*3-1, labels=paste(1:9, "月"))
lines(1:9*3-1, x,ylim=c(0,140000), col= color3)
points(1:9*3-1, x,ylim=c(0,140000), pch=20, cex=2, col= color3)
abline(h=0:7*20000)
cv <- c(color1, color2, color3)
legend(8*3, 140000, legend=c("雑費", "食料費", "月支出"), fill=cv, col=cv)

lines と points を使ったのは,折れ線と記号をきれいに書くため。
縦軸の目盛り数字を水平に書くこともできるが,私の主義に反するのでこのように。
横軸の値は1~カテゴリー数の倍数になっていること。
凡例は,棒と折れ線は同時に描けない見たいかな?

fig


No.01542 Re: Rで棒グラフと折れ線グラフを描く  【波音】 2006/11/07(Tue) 08:09

回答ありがとうございます。

なるほど,1度lines()で折れ線の線を描いてからpoints()を使って点を上書きしているわけですね。いつもながら(他の回答でもそうですが)青木先生の書いてくださるコードは勉強になります。

凡例は棒グラフと折れ線とで別けられなくても特に問題はありませんが,少し自分で同時に描けるかどうかを探してみようかと思います。

● 「統計学関連なんでもあり」の過去ログ--- 039 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る