ユーザ用ツール

サイト用ツール


メモ: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=算数, y=国語)) +
 +  geom_point() +
 +  geom_point(data=~.x %>% filter(理科>=45), color="red", size=5)
 +
 +ほとんど意味はないし、他の方法もあるが例として。
 +
 +2020年度に絞り込んで算数と国語の成績で散布図を作成したい。その際、理科の成績が45点以上の時は、さらに赤で大きめの点を重ねたい。その時、2番目のgeom_pointのdataオプションで理科が45点以上に絞ったデータを与えたい。ここで、source_dataからデータを作成しようとすると、ggplotに渡す直前までの処理をもう一度書いて、さらにそこから理科が45点以上というフィルタをかけなければならず、煩雑で変更する際の修正箇所も増える。そこで、dataの値に「~」を付けてformulaとすると、どうも「.x」でggplotに与えられたデータフレームにアクセスできるらしい。それを利用して「~ .x %>% filter(理科>45)」とすると、ggplotに与えられた段階のデータフレームに対してさらに処理を加えることができるようだ。
 +
 +
 +===== 数値軸の表示範囲 =====
 +
 +数値軸の表示範囲を決める場合、ズームをするときは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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki