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

R 使い方 | volcano plot 描き方(ボルケーノプロット)
volcano plotは、発現解析の結果を表現でよく使われるグラフです。横軸に発現比(logFC)、縦軸にpvalue(-log10した値)をとります。Rを使って、volcano plot (ボルケーノ プロット)を作成...
R 使い方 ボックスプロット(box plot) グラフの描き方
データを理解する方法の1つに「グラフ」があります。詳細なデータをまとめた表に比べると「詳細さ」は劣りますが、データの全体像を理解しやすくなります。そして、目的に応じたグラフを使うことが大事です。Rを使って、色んなグラフを描画してみ...
R 使い方 折れ線グラフ グラフの描き方
データを理解する方法の1つに「グラフ」があります。詳細なデータをまとめた表に比べると「詳細さ」は劣りますが、データの全体像を理解しやすくなります。そして、目的に応じたグラフを使うことが大事です。Rを使って、色んなグラフを描画してみましょう...
R 使い方 パイチャート(円グラフ) グラフの描き方
データを理解する方法の1つに「グラフ」があります。詳細なデータをまとめた表に比べると「詳細さ」は劣りますが、データの全体像を理解しやすくなります。そして、目的に応じたグラフを使うことが大事です。Rを使って、色んなグラフを描画してみましょう...
R 使い方 棒グラフ グラフの描き方
データを理解する方法の1つに「グラフ」があります。詳細なデータをまとめた表に比べると「詳細さ」は劣りますが、データの全体像を理解しやすくなります。そして、目的に応じたグラフを使うことが大事です。今回は、「棒グラフ」です。とにかく早...
R 使い方 散布図 グラフの描き方
データを理解する方法の1つに「グラフ」があります。詳細なデータをまとめた表に比べると「詳細さ」は劣りますが、データの全体像を理解しやすくなります。そして、目的に応じたグラフを使うことが大事です。Rを使って、色んなグラフを描画してみましょう...
R 使い方 ヒストグラム グラフの描き方
データを理解する方法の1つに「グラフ」があります。詳細なデータをまとめた表に比べると「詳細さ」は劣りますが、データの全体像を理解しやすくなります。そして、目的に応じたグラフを使うことが大事です。Rを使って、色んなグラフを描画してみましょう...

関連記事2

R 使い方 目盛りのべき乗回避 グラフの描き方
Rでグラフを描画する場合、位置やサイズを自動調整してくれるので大変便利です。しかし、カスタマイズしようと思えば、各種パラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸ラベルや目盛り、余白の調整についてまとめます。目盛...
R 使い方 任意の軸ラベル グラフの描き方
Rでグラフを描画する場合、位置やサイズを自動調整してくれるので大変便利です。しかし、カスタマイズしようと思えば、各種パラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸ラベルや目盛り、余白の調整についてまとめます。任意...
R 使い方 グラフにテキストを書き込む グラフの描き方
Rでグラフを描画する場合、位置やサイズを自動調整してくれるので大変便利です。しかし、カスタマイズしようと思えば、各種パラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸ラベルや目盛り、余白の調整についてまとめます。デー...
R 使い方 ラベル向き調整 グラフの描き方
Rでグラフを描画する場合、位置やサイズを自動調整してくれるので大変便利です。しかし、カスタマイズしようと思えば、各種パラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸ラベルや目盛り、余白の調整についてまとめます。ラベ...
R 使い方 余白サイズ グラフの描き方
Rでグラフを描画する場合、位置やサイズを自動調整してくれるので大変便利です。しかし、カスタマイズしようと思えば、各種パラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸ラベルや目盛り、余白の調整についてまとめます。余白...
R 使い方 軸ラベルのサイズ グラフの描き方
Rでグラフを描画する場合、位置やサイズを自動調整してくれるので大変便利です。しかし、カスタマイズしようと思えば、各種パラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸ラベルや目盛り、余白の調整についてまとめます。軸ラ...
R 使い方 チャートやグラフの組合せ グラフの描き方
チャートやグラフは、データの理解を手助けしてくれます。「統計ソフト R」では様々なグラフが手軽に描けるので便利です。単体のチャートやグラフでも役に立ちますが、表現には限界があり、一長一短となるものも少なくありません。異なる種類のチャートや...
R 使い方 軸と目盛りの調整まとめ グラフの描き方
Rでグラフを描画する場合、位置やサイズを自動で調整してくれるので大変便利です。しかし、少しカスタマイズしようと思えば、色々なパラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸の目盛りの調整についてまとめます。...
R 使い方 カラーパレット RColorBrewer 透明な色とグラフ
RColorBrewerは便利でよく使われるパッケージです。色々な色の組み合わせを簡単に使うことができます。しかし、複数のグラフを重ねたときに、透過度を簡単に設定できないのは使いにくく感じる場合があります。色の透過度を設定する方法を調べま...
R 使い方 グラフの色 自作のカラーパレットとデフォルトのカラーパレット
グラフを描画する際、色の組み合わせを1つ1つ考えるのは面倒ですよね。Rには、あらかじめ色の組み合わせを用意したカラーパレットが準備されています。カラーパレットを使えば、洗練された色の組み合わせで綺麗なグラフを描くことができます。自分で色の...
R グラフ 凡例の調整 legendオプション
Rでグラフを描いたとき、凡例が気になる場合がありませんか?工夫できるポイントを紹介します。とにかく早く問題解決したい人はこちら>>直接、データ解析相談R グラフ 凡例の細かい調整(legendオプション)グラフでよ...
R グラフ 凡例の調整 legendオプション
Rでグラフを描いたとき、凡例が気になる場合がありませんか?工夫できるポイントを紹介します。とにかく早く問題解決したい人はこちら>>直接、データ解析相談R グラフ 凡例の細かい調整(legendオプション)グラフでよ...
R 使い方 凡例・エラーバー・グラフ保存などの図の仕上げ グラフの描き方
「統計ソフト R」によるチャートやグラフの描画は、手軽で大変便利です。ただ、仕上げには細かい調整が必要です。今回は、そのようなときに役立つ「凡例」や「エラーバー」の描き方に関するテクニックをまとめます。とにかく早く問題解決したい人...
R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
Rによるplot(グラフ)の描画は、手軽で大変便利です。ただ、細かい調整に関しては、全てをデフォルトに任せるわけにはいかないようです。今回は軸について、色々と制御してみます。とにかく、早く問題を解決したい人にはこちら>>直接、デー...
R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
Rによるplot(グラフ)の描画は、手軽で大変便利です。ただ、細かい調整に関しては、全てをデフォルトに任せるわけにはいかないようです。今回は軸について、色々と制御してみます。とにかく、早く問題を解決したい人にはこちら>>直接、デー...
R 使い方 グラフ重ねる・グラフ分割「上下・左右」 グラフの描き方
R で複数のグラフを描画する際、いろいろな描き方を知っていると役に立つことがあります。よく用いられる「重ねる」「画面を分割する」について、まとめます。とにかく早く問題解決したい人はこちら>>直接、データ解析相談「R」で複数...
R 使い方 グラフ重ねる・グラフ分割「上下・左右」 グラフの描き方
R で複数のグラフを描画する際、いろいろな描き方を知っていると役に立つことがあります。よく用いられる「重ねる」「画面を分割する」について、まとめます。とにかく早く問題解決したい人はこちら>>直接、データ解析相談「R」で複数...
タイトルとURLをコピーしました