R 使い方 軸と目盛りの調整まとめ グラフの描き方

Rでグラフを描画する場合、位置やサイズを自動で調整してくれるので大変便利です。しかし、少しカスタマイズしようと思えば、色々なパラメータを調整する必要があります。より綺麗なグラフに仕上げるために、軸の目盛りの調整についてまとめます。

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

軸のラベルについて

基本的な使い方

グラフの描画の際、x軸・y軸のラベルや目盛りを意識することは少ないように思います。間隔や表示すべきデータをRが調整して、美しいグラフを仕上げることが出来ます。バイオインフォマティクスでも、散布図やヒートマップ・ボックスプロットなど色々なグラフを使いますが、細かい表現を気にしなければ簡単に描画することが出来ます。
軸目盛りのカスタマイズに関しては、文字の大きさや余白・表示間隔・数字表現(n乗)などを調整することが多いようです。

散布図

表示するデータのレンジが広い場合は、一部が10のn乗の表記になることがあります。
plot2

> data <- read.delim("data.txt")
> plot(data)

ヒートマップ

各軸に表示する文字が長い場合は、文字の大きさや向き調整したり・余白を広めにとるなどの調整が必要になります。


heatmap2

# from R sample
> require(graphics)
> require(grDevices)
> x  <- as.matrix(mtcars)
> heatmap(x, col = cm.colors(256), scale = "column")

>head(x, 3)
               mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4     21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710    22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

ボックスプロット

並べる項目数が多くなる・表示する文字が長くなると、文字のサイズや向きの調整が必要になります。


boxplot2

> boxplot(count ~ spray, data = InsectSprays, col = "lightgray")

> print(InsectSprays,3)
  count spray
1    10     A
2     7     A
3    20     A
...
70   26     F
71   24     F
72   13     F
※sprayの項目名を「spray_data_」で修飾

よく使うオプション

軸の目盛りやラベル表示に関連して、表現を少し工夫する場合はオプションを設定します。

  • xlab, ylab

    軸のラベルを指定します。

  • xlim, ylim

    軸に対する表示範囲を指定します。

  • xlog, ylog

    それぞれの軸を対数スケールで指定します。

  • cex.lab

    軸のラベルの大きさを調整します。(デフォルトサイズに対する倍数指定)

  • cex.axis

    軸の目盛りの大きさを調整します。(デフォルトサイズに対する倍数指定)

  • las

    軸の目盛りの向きを調整します。

  • mar

    プロット領域のマージンを調整します。

  • par

    グラフィカルパラメータの確認や設定を行うときに使います。

R 使い方 カラーパレット RColorBrewer 透明な色とグラフ
R 使い方 グラフの色 自作のカラーパレットとデフォルトのカラーパレット
Rの使い方 エラーバーを描く方法
R 使い方 凡例・エラーバー・グラフ保存などの図の仕上げ グラフの描き方

こんなときはどうする?

目盛りの文字の大きさを調整したい場合は?

目盛りの文字の大きさを調整するには、cex.axisオプションを指定します。デフォルトサイズに対する倍率で指定するので、0.2…0.5くらいの数値を設定して微調整すると設定しやすいと思います。par()関数で設定して描画します。

boxplot5

> par(cex.axis=0.5) 
> boxplot(count ~ spray, data=InsectSprays, col="lightgray") 

heatmap関数の場合は、ラベルの大きさを制御するオプションとしてcexRowcexColが準備されています。デフォルトサイズに対する倍率で指定するので、0.2…0.5くらいの数値を設定して微調整すると設定しやすいと思います。尚、デフォルトは、0.2をベースにして、列数や行数で自動で微調整されます。実際は、グラフの外側領域のサイズを調整しつつ、文字の大きさを調整すると良いと思います。

heatmap3

> heatmap(x, col = cm.colors(256), scale = "column", cexRow=0.5)

余白を調整したい場合は?

余白のサイズを調整するには、グラフィカルパラメータを調整します。特に、グラフ描画に関しては、プロット領域のマージンを調整することが多いのですが、その場合はレイアウトパラメータmarを調整します。具体的には、par()関数を使って設定を行います。par()関数でマージンを設定後に描画すると、マージン設定を反映したプロットが描画されます。


boxplot3

> par()$mar 
5.1 4.1 4.1 2.1 #下マージン・左マージン・上マージン・右マージン 
> par(mar=c(2.5, 2.5, 1, 1)) 
> boxplot(count ~ spray, data=InsectSprays, col="lightgray")

heatmap関数の場合は、マージンを調整するオプションとして、marginsオプションが準備されています。par$marと異なり2つのパラメータを指定しますが、下マージンと右マージンに対応しています。列名が長い場合や、行名が長い場合は、文字サイズとマージンを調整すると綺麗なヒートマップを描画できます。


heatmap

> heatmap(x, col=cm.colors(256), scale="column", margins=c(5,10))

ラベルの向きを調整したい?

boxplotのように項目名を1つ1つ全てに表示したい場合、文字が長くて表示が間引かれたり、描画枠からはみ出てしまうと困ります。そのようなときは、lasオプションを指定します。lasには0〜3までの4つの設定があります。(y,x)=(横・横, 縦・横, 縦・縦, 横・縦)で設定できます。par()関数で設定して描画します。


boxplot6

> par(las=2) 
> boxplot(count ~ spray, data=data2, col="lightgray", xlab="x label")

任意の間隔・内容で軸ラベルを表示したい?

軸の目盛りを任意の場所・任意の内容で表示する場合、グラフの表示と軸の表示を分けます。グラフの軸に関する表示を「非表示」に設定し、軸は別で描画します。軸の表示は、axis関数を使います。引数のatで任意の位置を指定し、labelsで表示するテキストを指定します。

barplot2

> barplot(VADeaths, axisnames=F)
> axis(1, at=c(0.7, 1.9, 4.3), labels=c("Rural Male", "Rural Female", "Urban Female"))

データの近くにテキストを表示したい?

グラフ描画の際、図だけではわかりにくいので、値をテキストで表示したいときがあります。そのようなときは、text関数を使います。表示位置x・y、データを指定することで、任意の位置に値を表示することができます。

barplot3

> barplot(VADeaths) 
> text(c(0.7), sum(VADeaths[,1])+4, labels=c(sum(VADeaths[,1])), col="red")  

目盛りのベキ乗表記を出来るだけ避けたい?

レンジが広いデータを扱う場合、目盛りの一部や片方の軸だけベキ乗表示になる場合があります。そのようなときは、プロット情報をもとに目盛りを作りなおして、axis関数で別途表示を検討します。

> plot(data_x, xaxt='n')
> x <- par()$xaxp
> x_seq <- seq(x[1], x[2], by=(x[2]-x[1])/x[3])
> x_seq <- as.integer(x_seq)
[1] 0  200000  400000  600000  800000 1000000
> axis(1, x_seq, labels=format(x_seq, sientific=F))  

論文・データ解析の支援

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

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

関連記事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 使い方 カラーパレット RColorBrewer 透明な色とグラフ
R 使い方 グラフの色 自作のカラーパレットとデフォルトのカラーパレット
R グラフ 凡例の調整 legendオプション
R 使い方 複数のグラフを並べる グラフの描き方
R 使い方 複数のグラフを並べる グラフの描き方
R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
R 使い方 散布図 工夫(透明度・グラフ並べるなど) グラフの描き方
R 使い方 グラフ重ねる・グラフ分割「上下・左右」 グラフの描き方
Rの使い方 エラーバーを描く方法



カテゴリー

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

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

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

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

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

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

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

人気記事

  1. IGV, 解析ツール

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

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

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

おすすめ記事

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

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

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

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