メモ:ggplot
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン両方とも次のリビジョン | |||
メモ:ggplot [2020/05/06 18:07] – 作成 admin | メモ:ggplot [2020/05/10 12:33] – Wiki Editor | ||
---|---|---|---|
行 13: | 行 13: | ||
scalesパッケージの「*_format」の使い方がいまいちわからなかったが、こういう時に使うということか。 | scalesパッケージの「*_format」の使い方がいまいちわからなかったが、こういう時に使うということか。 | ||
+ | |||
+ | ===== geom_* からデータフレームにアクセス ===== | ||
+ | |||
+ | 例えば、2つのgeom_pointで片方はデータを絞り込んでプロットしたいときなど、ggplotに与えられたデータフレームにアクセスしたい場合がある。ggplotに与えるデータフレームをあらかじめ作成してから処理する場合は、元のデータフレームを用いて絞り込み等をかければよいが、パイプでデータ処理をしたうえで、パイプから直接ggplotにデータフレームを与えるとき、しばしばデータ処理を施した段階のデータフレームにアクセスしたいことがある。多くの場合、データフレームの各フィールドに直接アクセスすればよいが、一部のgeom_*のdataに、元のデータフレームに追加でフィルタなどを施したいことがある。そのような場合のトリック。 | ||
+ | |||
+ | |||
+ | source_data %>% | ||
+ | filter(年度==2020) %>% | ||
+ | ggplot(aes(x=算数, | ||
+ | geom_point() + | ||
+ | geom_point(data=~.x %>% filter(理科> | ||
+ | |||
+ | ほとんど意味はないし、他の方法もあるが例として。 | ||
+ | |||
+ | 2020年度に絞り込んで算数と国語の成績で散布図を作成したい。その際、理科の成績が45点以上の時は、さらに赤で大きめの点を重ねたい。その時、2番目のgeom_pointのdataオプションで理科が45点以上に絞ったデータを与えたい。ここで、source_dataからデータを作成しようとすると、ggplotに渡す直前までの処理をもう一度書いて、さらにそこから理科が45点以上というフィルタをかけなければならず、煩雑で変更する際の修正箇所も増える。そこで、dataの値に「~」を付けてformulaとすると、どうも「.x」でggplotに与えられたデータフレームにアクセスできるらしい。それを利用して「~ .x %>% filter(理科> | ||
+ | |||
+ | |||
+ | ===== 数値軸の表示範囲 ===== | ||
+ | |||
+ | 数値軸の表示範囲を決める場合、ズームをするときはcoord_cartesianを利用するが、折れ線グラフの上部にgeom_textなどで値を表示するような場合、最大のデータポイントのテキストが見切れる場合がある。これに対する処理として、geom_blankを上に挿入する方法などがあるが、scale_y_continuousのexpandを利用する方法もある。 | ||
+ | |||
+ | ... + | ||
+ | scale_y_continuous(expand = c(.1,.1)) + | ||
+ | .... | ||
+ | |||
+ | expandはデータの最小、最大に対してどれだけ余白を設けるかを決めているようだ。上記の例では、それぞれ10%の余白を入れる設定になる。これで、最大のデータポイントより上に余白ができるので、ラベルなどがはみ出すのを防げる。 | ||
+ | |||
+ | |||
+ | |||
+ |
メモ/ggplot.txt · 最終更新: 2022/05/18 10:33 by Wiki Editor