Rでグラフ (plot) を重ねる方法は、「単純な追加」「図に重ねて描画」「濃淡で重なり表現」の3つの代表的なパターンがあります。plotを重ねる場合は、色や透明度を変えたり・線のパターンを変更すると、キレイで見やすいplotが描けます。R でグラフ (plot) を重ねる場合は、複数のプロットを1つにまとめて仕上げる視点が必要です。
R plot – 重ねて描画する方法
Rでplotを重ねる場合は、作図関数のオプションで「追加」を指定します。関数がオプションを指定できない場合は、グラフィックオプションを指定して、既に描画した図に重ね書きします。また、1つのplotでデータの分布や重なりを表現する場合は、条件で色を分けたり、濃淡を工夫したりします。
- 作図関数に追加オプションを指定する
- オプションで重ねられない場合は、グラフィックオプションで直接重ね描きする
- 分布やデータの重なりを描画する場合は、条件式による色分けや、濃淡で表現するとよい
オプションで追加して plot を重ねる方法
plotを重ねる場合、plotを追加する側の作図関数にaddオプションを指定します(TRUE or 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: )
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つにまとめあげる視点が必要。
実験データの解析や論文用グラフ作成のヒントになりそうな、プログラミング・統計処理の参考になる書籍をまとめて紹介しています。是非、参考にしてみて下さいね。
論文・データ解析の支援
個別に直接相談できるのが良いと、たくさんの方にご利用頂いています。