ggplotの軸の桁表示を制御する
ggplotで、桁数が大きいと自動でe+n表示へと変わる。
自分で分析する場合はいいが、この表示に慣れていない人に見せる際にわかりづらいので制御する。
まずはデフォルトでの表示。デフォルトでは107以降が存在する場合e+nの表示になる。
library(tidyverse) values = tibble(a = seq(1000000,10000000,1000000), b =seq(1000000,10000000,1000000)) values %>% ggplot(aes(a, b)) + geom_point()
まずは、x軸をscales::label_comma
を用いて1000桁毎にカンマを打つ(比較のためy軸はそのまま)
library(scales) values %>% ggplot(aes(a, b)) + geom_point() + scale_x_continuous(labels = label_comma()) # 1000桁毎にカンマ
次に、x軸を scales::label_number
を用いて省略されていない生の値にする。
values %>% ggplot(aes(a, b)) + geom_point() + scale_x_continuous(labels = label_number()) # eで省略されないそのままの値
また、このとき値を変換しつつ接頭接尾に文字列を入れることもできる。
例えば、10000を10kとするように、単位kをつける場合値自体を1/1000して接尾にkをつける。
values %>% ggplot(aes(a, b)) + geom_point() + scale_x_continuous(labels = label_number(scale = 1/1000, suffix = 'k')) # 単位k(1000)をつけるため値自体は1/1000する
また、label_number_si
でK,M,B,T,...と動的に単位を変えて表示することもできる。
values = tibble(a = seq(100000,1000000,100000), b =seq(100000000000,1000000000000,100000000000)) values %>% ggplot(aes(a, b)) + geom_point() + scale_x_continuous(labels = label_number_si()) + # 単位を自動でつけて常に数値は3桁になるようにする scale_y_continuous(labels = label_number_si()) # yも同様
この他にも、label_percent
でパーセンテージ対応をしたり、label_scientific
で任意のe+nにするなど色々な値に対して対応できる。