/>
小さな工夫と発見の蓄積
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
ggplot2
はRのグラッフィク・ライブラリの1つだ。あまり詳しい設定をいじらなくても、結構きれいな画像を描画してくれる。しかも、しっかりと仕組みを理解すればかなり自由にカスタマイズすることも可能らしい。一念発起して、ggplot2
の習得を目指す。p <- ggplot(data, aes(...)) # オブジェクトの作成 p + geom_bar() ... # 描画
* ggplot関数は、必要なデータが1つのデータフレームに入っているようなときに便利。よりシンプルなqplot
関数も用意されているが、より汎用性の高いggplot2
を覚えれば、qplot
でできることは全てできる。
* ggplot
オブジェクトをまず作り、そこにどんどん描画(レイヤー)を足していくイメージ。
* aes
(エステティック)は、グラフの構成要素と考えればよい。xは横軸変数、fillは塗りつぶしに使う色など。
* geom_bar
関数は、カテゴリごとの個体数を表示するようにデザインされた。
このカテゴリに対応する変数を、
aes(x)
として指定する。
* 棒の長さに対応する値はデータから個体数を数えて求めるものであって、今回のように値がすでに与えられているようなケースでは少し工夫が必要:横軸変数(順位)をaes(x)
に指定し、値変数(賞金額)をaes(weight)
に指定する。
* aes
変数は、あとから追加できるし、指定を変更することもできる。
* 上から描画を足すことができる。aes
変数は原則としてそのまま使われるが、別のものを指定してもいい。
x <- read.table('http://blog.cnobi.jp/v1/blog/user/ca2e456143c0d20195537cc5daa5fd14/1396338447', header=F, as.is=T) names(x) <- c('sei', 'mei', 'shokin', 'shozoku') x$shokin <- x$shokin/10000 x$rank <- as.factor(1:nrow(x)) # use as category x$sei <- factor(x$sei, levels=x$sei) # use as category barwidth <- .3 library(ggplot2) library(scales) # comma() function p <- ggplot(x, aes(rank, weight=shokin)) p + geom_bar(width=barwidth) + xlab('') + ylab('賞金額(万円)') + ggtitle('日本棋院賞金ランキング 2013') + scale_y_continuous(labels=comma) # ...(1) p + geom_bar(aes(fill=shozoku), width=barwidth) + xlab('') + ylab('賞金額(万円)') + ggtitle('日本棋院賞金ランキング 2013') + scale_y_continuous(labels=comma) + theme(legend.position='bottom', legend.title=element_blank()) # ...(2) p + geom_bar(aes(x=sei), width=barwidth) + xlab('') + ylab('賞金額(万円)') + ggtitle('日本棋院賞金ランキング 2013') + scale_y_continuous(labels=comma) # ...(3) p <- p + geom_bar(width=barwidth) + xlab('') + ylab('賞金額(万円)') + ggtitle('日本棋院賞金ランキング 2013') + scale_y_continuous(labels=comma) # 中間地点 p + geom_text(aes(y=shokin, label=sei), col='white', size=5.2, fontface=2) + geom_text(aes(y=shokin, label=sei)) # ...(4) p + geom_bar(width=barwidth) + xlab('') + ylab('賞金額(万円)') + ggtitle('日本棋院賞金ランキング 2013') + scale_y_continuous(labels=comma) + geom_text(aes(y=shokin, label=sei), vjust=-0.1) # ...(5) p + geom_bar(width=barwidth) + xlab('') + ylab('賞金額(万円)') + ggtitle('日本棋院賞金ランキング 2013') + scale_y_continuous(labels=comma) + geom_text(aes(y=shokin, label=sei), hjust=-0.3) # ...(6)