(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【R言語】plotしたグラフの軸に表示される指数形式(e+0x)な表記の外し方

スポンサーリンク

やりたいこと

巨大な数値のグラフを生成した際に以下のように出力されるグラフの指数表記(5e+06 = 5 × 10^{6})を指数表記ではない形で記載したい(5000000など)。

f:id:mtiit:20210525083434j:plain
縦軸が指数表記

環境
# R --version
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

やり方

y軸の目盛りを消すためにyaxtをnとしてplotを行い

>  plot(data_x,data_y,ylim=c(0,5200000),yaxt='n')

以下でplotコマンドで生成された目盛り情報を取得

> y_myaxt <- par()$yaxp

同値を以下のように加工して

>  y_seq <- seq(y_myaxt[1], y_myaxt[2], by=(y_myaxt[2]-y_myaxt[1])/y_myaxt[3])

以下で目盛り情報を付与する。

> axis(2, y_seq, labels=format(y_seq, sientific=F))

それで生成されるグラフは以下。指数表記ではない数値でグラフが表現されている。
f:id:mtiit:20210525083459j:plain

以下、補足です。

補足

目盛り情報の中身を見ると、最小値,最大値,目盛りの数 が格納されています。

> y_myaxt
[1] 0e+00 5e+06 5e+00

よってこの値をベースにして目盛りの値を再現しました。

axisの中に「2」という数値がありますが、これは(1:下,2:左,3:上,4:右)を表しているので今回は左側にy軸目盛りを付与するためにそのひょうにしています。

また、y軸の目盛りを最初に消さずに目盛りを付与すると以下のようになるので
f:id:mtiit:20210525083514j:plain
表示される位置含めて再現できていることがわかります。

以上、ご参考になれば幸いです。