ggplot2を使って、軸を制御する-2
R グラフィックス クックブック 23回目
ggplot2パッケージを利用して、軸を制御していきます。
今回は、軸のスケール比や目盛り軸を手動で設定します。
軸のスケール
こちらのデータセットを使います。
ハーフマラソンとフルマラソンのタイムのデータです。
> str(marathon) 'data.frame': 520 obs. of 2 variables: $ Half: num 66.8 67.9 68.7 69.9 70 ... $ Full: num 141 147 148 157 147 ... > head(marathon) Half Full 1 66.80000 141.4833 2 67.88333 147.2667 3 68.70000 147.8833 4 69.90000 156.7500 5 69.95000 147.4333 6 70.11667 150.0000
sp <- ggplot(marathon, aes(x=Half, y=Full)) + geom_point() sp
x軸が30m間隔、y軸が50m間隔になっていますが、どちらの軸も同じ指標です。
同じ指標ですので、軸は同じ間隔に揃えた方が、分布が分かりやすいです。
同じ間隔に揃えるためには、coord_fixed()を使い、さらに、
scale_y_continuous()とscale_x_continuous()のbreaks引数を指定します。
#0-420の間を30間隔にします sp + coord_fixed() + scale_y_continuous(breaks=seq(0,420,30))+ scale_x_continuous(breaks=seq(0,420,30))
この散布図は、ハーフマラソンとフルマラソンのタイムの分布のため
x軸のハーフマラソン側を、y軸のフルマラソンのスケールの1/2にした方が伝わりやすいかもしれません。
スケール比率を変更するためには、coord_fixed()のratio引数を指定します。
sp + coord_fixed(ratio=1/2) + scale_y_continuous(breaks=seq(0,420,30))+ scale_x_continuous(breaks=seq(0,420,15))
目盛りの位置
ここからは、R: Results from an Experiment on Plant Growthを使います。
p <- ggplot(PlantGrowth, aes(x=group,y=weight)) + geom_boxplot() p
デフォルトで適切な位置に目盛りを設定してくれますが、手動で設定するためには、
scale_y_continuous()とscale_x_continuous()のbreaks引数を指定します。
p + scale_y_continuous(breaks=c(4,4.25,4.5,5,6,8))
指定した目盛りが適用されるのは、主目盛り線になります。
補助目盛り線は、主目盛り線の中間の位置に描かれます。
等間隔で、breaks引数を指定する際に、seq()関数や:演算子を使うと楽です。
> seq(4,7,by=.5) [1] 4.0 4.5 5.0 5.5 6.0 6.5 7.0 > 5:10 [1] 5 6 7 8 9 10
離散値の軸に対しては、scale_x_discrete()やscale_y_discrete()関数に、
limits引数を指定して、順序の設定と要素の除外を行い、
breaks引数を指定して、ラベルの表示設定を行います。
#trt2とctrl列だけを表示して、ctrlだけラベルで設定する p + scale_x_discrete(limits=c("trt2","ctrl"),breaks="ctrl")
目盛りとラベルの非表示
目盛りのラベルを非表示にする場合は、theme()のaxis.text.y引数や
axis.text.x引数に、element_blank()を指定します。
#y軸の目盛りラベルを非表示にします p + theme(axis.text.y = element_blank())
チョコっと出ている黒い目盛り記号を非表示するには、
axis.ticks引数に、element_blank()を指定します。
#軸の指定がないため、両方の軸の目盛り記号が非表示になります。 p + theme(axis.ticks = element_blank(), axis.text.y = element_blank())
主目盛り線を非表示にするには、
scale_y_continuous()やscale_x_continuous()関数の
breaks引数に、NULLを指定します。
#y軸の目盛り線を非表示にします。 p + scale_y_continuous(breaks=NULL)
目盛りに関して、制御できる項目は3か所です。
- 目盛りラベル
- 目盛り記号(黒いチョッとだけで出てる線)
- 目盛り線
軸内の位置指定は、軸が連続値か離散値で指定方法が異なります。
- 連続値:breaksで指定する(非表示にするには、NULLを指定する)
- 離散値:limitsで指定する(非表示にするには、その要素を含めない)
目盛りラベル、目盛り線は、軸ごとに制御可能ですが、
目盛り記号だけは、両軸に適用されてします。
次回は、目盛りラベルのテキストや、軸ラベルのテキストを制御します。