R plot 重ねる方法3パターン サンプルでわかるRの使い方

Rでグラフ (plot) を重ねる方法は、「単純な追加」「図に重ねて描画」「濃淡で重なり表現」の3つの代表的なパターンがあります。plotを重ねる場合は、色や透明度を変えたり・線のパターンを変更すると、キレイで見やすいplotが描けます。R でグラフ (plot) を重ねる場合は、複数のプロットを1つにまとめて仕上げる視点が必要です。

R plot – 重ねて描画する方法

Rでplotを重ねる場合は、作図関数のオプションで「追加」を指定します。関数がオプションを指定できない場合は、グラフィックオプションを指定して、既に描画した図に重ね書きします。また、1つのplotでデータの分布や重なりを表現する場合は、条件で色を分けたり、濃淡を工夫したりします。

  • 作図関数に追加オプションを指定する
  • オプションで重ねられない場合は、グラフィックオプションで直接重ね描きする
  • 分布やデータの重なりを描画する場合は、条件式による色分けや、濃淡で表現するとよい

オプションで追加して plot を重ねる方法

plotを重ねる場合、plotを追加する側の作図関数にaddオプションを指定します(TRUE or T)。

ヒストグラム 重ねた場合(add=T)
 1: $ R
 2: hist(
 3:   rnorm(1000, mean=-2, sd=1),      # データ
 4:   xlim=c(-10, 10), ylim=c(0, 250), # 範囲
 5:   col="#ff000020",                 # 色
 6:   main="rnorm", xlab="range"       # タイトル・ラベル
 7: )
 8: 
 9: hist(
10:   rnorm(1000, mean=2, sd=1),       # データ
11:   col="#0000ff20",                 # 色
12:   add=TRUE                         # addオプション(plot 重ねる)
13:                                    # 範囲は自動調整
14:                                    # タイトル・ラベルは同じ
15: )
線グラフ 重ねた場合(add=T)
 1: plot(
 2:   sin,                             # データ
 3:   xlim=c(0,5), ylim=c(-1,1),       # 範囲
 4:   ann=F                            # ラベル表示抑制
 5: )
 6: 
 7: plot(
 8:   cos,                             # データ
 9:   xlim=c(0,5), ylim=c(-1,1),       # 範囲
10:   lty=2,                           # 線のタイプ(点線)
11:   ylab="sin(x), cos(x)",           # ラベル
12:   add=T                            # add(plot 重ねる)
13: )

グラフィックパラメータで plot を重ねる方法

オプションを使わないでplotを重ねる場合、追加側の作図関数を呼び出す前にグラフィックパラメータで「重ね描き」を指定します(par(new=T))。描画するplotはそれぞれ別のplotなので、描画範囲など細かい指定が必要です。

線グラフ 重ねた場合(グラフィックパラメータ)
 1: plot(
 2:   sin,                            # データ
 3:   xlim=c(0,5), ylim=c(-1,1),      # 範囲
 4:   ann=F                           # ラベル表示抑制
 5: )
 6: 
 7: par(new=T)                         # グラフィックパラメータ「重ね描き」
 8: 
 9: plot(                              
10:   cos,                            # データ 
11:   xlim=c(0,5), ylim=c(-1,1),      # 範囲
12:   lty=2,                          # 線のタイプ(点線)
13:   ylab="sin(x), cos(x)"           # ラベル
14: )

色や透明度で plot を重ねる方法(表現)

散布図で点やマークを使って描画する場合、点が重なった場合は重なり具合の情報がわかりにくくなります。色分けして描画すると、重なり具合がわかりやすくなります。また、透明度を指定して描画すると、重なったときに濃淡の違いによって重なり度合いがわかりやすくなります。透明度は、col(色の指定)の最後で指定したalpha値で、alpha=0.0は透明・alpha=1.0は不透明です。

散布図色分け
1: $ R 
2: plot(
3:   log2(Sepal.Length) ~ log2(Sepal.Width),  # plotデータ
4:   data=iris,                               # データ
5:                                            # 色(条件を満たす:赤、それ以外:青)
6:   col=ifelse(log2(Sepal.Length)>2.5, "red", "blue")             
7: )
濃淡で重なりを表現
1: $ R 
3: plot(
4:   log2(Sepal.Length) ~ log2(Sepal.Width),  # plotデータ
5:   data=iris,                               # データ
6:   col=rgb(0, 0, 0, alpha=0.1),             # 色(R, G, B, alpha:透明度)
7:   pch=16                                   # 描画に使うマーク
8: )

R plot – 重ねる際の注意点

Rでplotを重ねる場合、データ以外の「タイトルやラベルの重なり」に注意を払う必要があります。直接重ね書きした場合は、データの範囲を同じにする必要があります。plotを重ねる場合は、凡例やデータの重なり部分にも配慮するときれいで見やすいplotになります。

グラフタイトルやラベル名

plotを重ねるとラベルも重なります。異なる情報が重なると読めなくなるので、まとめて表示したり、必要に応じてラベルの表示をしないように設定したりする必要があります。

 1: plot(
 2:   sin,                        # データ
 3:   xlim=c(0,5), ylim=c(-1,1),  # 範囲
 4:   ylab="sin(x), cos(x)"       # ラベルなどをまとめて表示
 5: )
 6: 
 7: plot(
 8:   cos,                        # データ
 9:   xlim=c(0,5), ylim=c(-1,1),  # 範囲
10:   lty=2,                      # 線のタイプ(点線) 
11:   ann=F,                      # ラベルの重ね書きしない(必要に応じて)
12:   add=T                       # plot 重ねる
13: )

範囲を合わせる

オプションを使ってplotを重ねる場合は、範囲は自動調整されます。直接重ね描きする場合は、範囲はそれぞれの描画範囲を持つので、xlim・ylimで同じ範囲を指定します。

範囲を揃える
 1: $ R
 2: hist(
 3:   rnorm(1000, mean=-2, sd=1),      # データ
 4:   xlim=c(-10, 10), ylim=c(0, 250), # 範囲
 5:   col="#ff000020",                 # 色
 6:   main="rnorm", xlab="range"       # タイトル・ラベル
 7: )
 8: 
 9: hist(
10:   rnorm(1000, mean=2, sd=1),       # データ
11:   col="#0000ff20",                 # 色
12:   add=TRUE                         # addオプション(plot 重ねる)
13:                                    # 範囲は自動調整
14:                                    # タイトル・ラベルは同じ
15: )

plotをグラフィックパラメータで上書きする場合は、範囲を指定する必要があります。図は同じです。

 1: $ R
 2: hist(
 3:   rnorm(1000, mean=-2, sd=1),      # データ
 4:   xlim=c(-10, 10), ylim=c(0, 250), # 範囲
 5:   col="#ff000020"                  # 色
 6: )
 7: 
 8: par(new=T)
 9: 
10: hist(
11:   rnorm(1000, mean=2, sd=1),       # データ
12:   xlim=c(-10, 10), ylim=c(0, 250), # 範囲を合わせる
13:   col="#0000ff20"                  # 色
14: )

凡例などのアクセサリー

plotを重ねる場合は、個々の凡例情報を最後にまとめて表示します。

凡例はまとめて表示する
 1: plot(
 2:   sin,                        # データ
 3:   xlim=c(0,5), ylim=c(-1,1),  # 範囲
 4:   ylab="sin(x), cos(x)"       # ラベルなどをまとめて表示
 5: )
 6: 
 7: plot(
 8:   cos,                        # データ
 9:   xlim=c(0,5), ylim=c(-1,1),  # 範囲
10:   lty=2,                      # 線のタイプ(点線)
11:   add=T                       # plot 重ねる
12: )
13: 
14: legend(                       # 凡例
15:   "topright",                 # 表示位置
16:   lty=1:2,                    # 表示パターン(まとめて)
17:   legend=c("sin", "cos")      # 表示名(まとめて)
18: )

データの見やすさ 色・透明度・パターンの工夫

plotを重ねる場合は、情報が多くなるのでデータの重なり部分も見やすくなるように工夫が必要です。重なり具合がわかりやすいように、色に透過率を指定したり、plotの線のパターンを変えたりすると見やすくなります。情報が区別できるように、凡例も整理して表示します。

透明度を利用して、重なり部分を見やすく
 1: $ R
 2: hist(
 3:   rnorm(1000, mean=-2, sd=1),      # データ
 4:   xlim=c(-10, 10), ylim=c(0, 250), # 範囲
 5:   col="#ff000020",                 # 色(20は透過率)
 6:   main="rnorm", xlab="range"       # タイトル・ラベル
 7: )
 8: 
 9: hist(
10:   rnorm(1000, mean=2, sd=1),       # データ
11:   col="#0000ff20",                 # 色(20は透過率)
12:   add=TRUE                         # addオプション(plot 重ねる)
13: )
線のパターンを変えてデータを区別しやすく。凡例もわかりやすく。
 1: plot(
 2:   sin,                             # データ
 3:   xlim=c(0,5), ylim=c(-1,1),       # 範囲
 4:   ylab="sin(x), cos(x)"            # ラベル
 5: )
 6: 
 7: plot(
 8:   cos,                             # データ
 9:   xlim=c(0,5), ylim=c(-1,1),       # 範囲
10:   lty=2,                           # 線のタイプ(点線)
11:   add=T                            # add(plot 重ねる)
12: )
13: 
14: legend(                            # 凡例
15:   "topright", 
16:   lty=1:2,                         # それぞれの線のパターン
17:   legend=c("sin", "cos")           # それぞれのデータ名
18: )

R plot – plotを重ねる場合の仕上げ

R でグラフ (plot) を重ねる場合は、データを重ねるだけでなく、「タイトルやラベル」「見やすさ・わかりやすさ」をまとめて1つのplotに仕上げるという視点が必要です。

まとめ

  • Rでグラフ (plot) を重ねる方法は、「単純な追加」「図に重ねて描画」「濃淡で重なり表現」の代表的なパターンがある。
  • 色や透明度を変えたり・線のパターンを変更すると、キレイで見やすいplotが描ける。
  • plotを重ねる場合は、複数のプロットを1つにまとめあげる視点が必要。

実験データの解析や論文用グラフ作成のヒントになりそうな、プログラミング・統計処理の参考になる書籍をまとめて紹介しています。是非、参考にしてみて下さいね。



カテゴリー

今週よく読まれている記事

  1. 学会・会議で英語が絶望的にできなくて困るケース | オンライン開催で「英語力のなさ」を痛感した場合の対処法

    学会・会議で英語ができなくてに困るケース学会やイベント・会議などが、オンラインで開催される…
  2. r tidyverse 使い方 | 列 filter 絞り込み select関数 – dplyrパッケージ

    tidyverseで1つのデータフレームの列の絞り込みは、dplyrパッケージのselect関数を…
  3. プログラミングで疲れた脳をリフレッシュ 〜 鬼滅の刃「感動」と「やる気アップ」でストレス発散!

    ストレス発散は鬼滅で。「50%OFF」で読む!脳のパフォーマンスを上げるには、適度な休憩と…
  4. AWS ディスク容量不足 新しいボリュームを追加する

    バイオインフォマティクスでは大きなファイルを扱うことがあるので、ディスク不足に陥ることがあります。…
  5. 「知っている」と「知らない」とでは、もしものとき、大違いになる – コロナうつ対策

    コロナうつなどという言葉を聞くようになりましたが、派遣切り、解雇、リストラは、これから本格化します…

人気記事

  1. Excel, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…
  2. R言語

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  3. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…

おすすめ記事

  1. awk, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…
  3. シェルスクリプト

    シェルスクリプト | ファイル存在チェック・空ファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…