📈

base Rの対数グラフで目盛りをつけるときのTips

2025/02/18に公開

対数グラフの目盛り

plot( ..., log = "y") #とすると片対数グラフになる

既知(主観)の問題点

  • plot関数のデフォルト目盛りはグラフ上で等間隔なので点の位置が読み取りづらい
  • 軸ラベルが科学表記(1e-2)で見栄えしない
    デフォルト表示

axis関数

デフォルトplot関数の軸を非表示にしてユーザ定義の目盛りを表示する

plot(..., log = "y",  yaxt = "n")
axis(side = 2, ...)

axis関数にat引数を与えるときはベクトルの直積を使うと手軽

 hoge %o% huga #これでlogスケールの目盛り用の配列を生成
 2:9 %o% 10^(-2:5) #例
#>>     [,1] [,2] [,3] [,4] [,5] [,6]  [,7]  [,8]
#>>[1,] 0.02  0.2    2   20  200 2000 20000 2e+05
#>>[2,] 0.03  0.3    3   30  300 3000 30000 3e+05
#>>[3,] 0.04  0.4    4   40  400 4000 40000 4e+05
#>>[4,] 0.05  0.5    5   50  500 5000 50000 5e+05
#>>[5,] 0.06  0.6    6   60  600 6000 60000 6e+05
#>>[6,] 0.07  0.7    7   70  700 7000 70000 7e+05
#>>[7,] 0.08  0.8    8   80  800 8000 80000 8e+05
#>>[8,] 0.09  0.9    9   90  900 9000 90000 9e+05

実際には、


plot(data, log = "y", yaxt = "n")

# hoge %o% fuga で目盛り位置を指定する配列を生成、グラフィックパラメータで薄い点線表示に
axis(side= 2, at = 1:10 %o% 10^(-2:3), labels= F, lty = 2, col = "gray", tck = 1, lwd = 2)

# こっちは見た目を整えるためのおまけ
axis(side= 2, at = 1:10 %o% 10^(-2:3), labels= F, tck = 0.015, lwd = 2)
axis(side= 2, at = 10^(-2:4), labels= F, tck = 0.03, lwd = 2)
axis(side= 1, at = seq(0,100,by=10), labels= F, tck = 1,lty = 2, col = "gray", tck = 1)                                                

と書くとこう⇓なる。


参考文献

https://okumuralab.org/~okumura/stat/190129.html

Discussion