R グラフ 凡例の調整 legendオプション

Rでグラフを描いたとき、凡例が気になる場合がありませんか?工夫できるポイントを紹介します。

とにかく早く問題解決したい人はこちら>>直接、データ解析相談

R グラフ 凡例の細かい調整(legendオプション)

グラフでよく使うヒストグラムを例にして凡例の細かい調整を行います。他のグラフでも同様に活用できます。

ヒストグラム 複数のグラフを重ねる

hist(
  rnorm(1000, mean=-2, sd=1), 
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#ff000020",
  main="rnorm", xlab="range")
hist(
  rnorm(1000, mean=2, sd=1),
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#0000ff20",
  main="rnorm", xlab="range",
  add=TRUE)

グラフに凡例をつける

legendで文字列のベクターを与えれば、Rのグラフで凡例を簡単に表示できます。しかし、複数のグラフを区別したい場合、テキストの情報だけでは区別ができません。通常、凡例テキストの前にマークをつけるなどの工夫を行います。さらに、この場合に限ってはマークが無いにもかかわらず、凡例内に無駄な余白があって凡例がすっきりしません。

hist(
  rnorm(1000, mean=-2, sd=1), 
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#ff000020",
  main="rnorm", xlab="range")
hist(
  rnorm(1000, mean=2, sd=1),
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#0000ff20",
  main="rnorm", xlab="range",
  add=TRUE)
legend("topright", legend=c("sample1", "sample2"))

legend 凡例マーク

識別マークをつけます。legend関数のltyオプションを指定すると、ラインパターンで識別できるようになります。ヒストグラムの場合はこのマークは適しません。しかし、グラフを複数重ねる場合によく用いられる折れ線グラフでは、データのパターンとRのグラフの凡例パターンに同じ番号を指定して使うことで識別が容易になります。

凡例マーク : ライン

hist(
  rnorm(1000, mean=-2, sd=1), 
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#ff000020",
  main="rnorm", xlab="range")
hist(
  rnorm(1000, mean=2, sd=1),
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#0000ff20",
  main="rnorm", xlab="range",
  add=TRUE)
legend("topright", legend=c("sample1", "sample2"), lty=c(1,2))
plot(sin, xlim=c(0,5), ylim=c(-1,1), ann=F)
par(new=T)
plot(cos, xlim=c(0,5), ylim=c(-1,1), lty=2, ylab="sin(x), cos(x)")
legend("topright", lty=1:2, legend=c("sin", "cos"))

凡例マーク : 四角形

ヒストグラムの場合は、識別マークはfillオプションを指定した方がピッタリです。データと同じ色をベクターで指定します。

hist(
  rnorm(1000, mean=-2, sd=1), 
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#ff000020",
  main="rnorm", xlab="range")
hist(
  rnorm(1000, mean=2, sd=1),
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#0000ff20",
  main="rnorm", xlab="range",
  add=TRUE)
legend("topright", legend=c("sample1", "sample2"), fill=c("#ff000020", "#0000ff20"))

legend 凡例内の位置調整

マークを付けない場合は、凡例内に無駄な余白ができるので位置を調整します。x.interspオプションを使います。凡例のマークがないときは、x.interspの値を0にすると余分な余白がなくなります。指定する値を大きくすると、マークとテキストの間隔が広がります。縦の間隔を調整する場合は、y.interspです。同様に値を大きくすると、間隔が広くなります。

余分な余白をなくす(凡例マークなし)

hist(
  rnorm(1000, mean=-2, sd=1), 
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#ff000020",
  main="rnorm", xlab="range")
hist(
  rnorm(1000, mean=2, sd=1),
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#0000ff20",
  main="rnorm", xlab="range",
  add=TRUE)
legend("topright", legend=c("sample1", "sample2"), x.intersp=0)

凡例 マークとテキストの間隔を広くする

legend("topright", legend=c("sample1", "sample2"), x.intersp=20)

凡例 縦の間隔を広くする

legend("topright", legend=c("sample1", "sample2"), y.intersp=10)

legend 色調整

ltyfillオプションを使わない場合、色で識別することもできます。text.colオプションを使います。データと同じ色をベクターで指定します。

hist(
  rnorm(1000, mean=-2, sd=1), 
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#ff000020",
  main="rnorm", xlab="range")
hist(
  rnorm(1000, mean=2, sd=1),
  xlim=c(-10, 10), ylim=c(0, 250),
  col="#0000ff20",
  main="rnorm", xlab="range",
  add=TRUE)
legend("topright", legend=c("sample1", "sample2"), text.col=c("#ff000020", "#0000ff20"), x.intersp=0)

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

論文・データ解析の支援

個別に直接相談できるのが良いと、たくさんの方にご利用頂いています。

とにかく早く問題解決したい人はこちら>>直接、データ解析相談
とにかく早く問題解決したい人はこちら>>直接、論文相談

関連記事1

R 使い方 | volcano plot 描き方(ボルケーノプロット)
R 使い方 ボックスプロット(box plot) グラフの描き方
R 使い方 折れ線グラフ グラフの描き方
R 使い方 パイチャート(円グラフ) グラフの描き方
R 使い方 棒グラフ グラフの描き方
R 使い方 散布図 グラフの描き方
R 使い方 ヒストグラム グラフの描き方

関連記事2

R plot 重ねる方法3パターン サンプルでわかるRの使い方
R 使い方 目盛りのべき乗回避 グラフの描き方
R 使い方 任意の軸ラベル グラフの描き方
R 使い方 グラフにテキストを書き込む グラフの描き方
R 使い方 ラベル向き調整 グラフの描き方
R 使い方 余白サイズ グラフの描き方
R 使い方 軸ラベルのサイズ グラフの描き方
R 使い方 チャートやグラフの組合せ グラフの描き方
R 使い方 軸と目盛りの調整まとめ グラフの描き方
R 使い方 カラーパレット RColorBrewer 透明な色とグラフ
R 使い方 グラフの色 自作のカラーパレットとデフォルトのカラーパレット
R 使い方 複数のグラフを並べる グラフの描き方
R 使い方 凡例・エラーバー・グラフ保存などの図の仕上げ グラフの描き方
R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
R 使い方 散布図 工夫(透明度・グラフ並べるなど) グラフの描き方
R 使い方 グラフ重ねる・グラフ分割「上下・左右」 グラフの描き方
Rの使い方 エラーバーを描く方法



カテゴリー

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

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

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

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

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

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

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

人気記事

  1. R言語

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  2. Excel, 統計

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

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

おすすめ記事

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

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. シェルスクリプト

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

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