有効数字表示

ggplot2 でプロットされたグラフの軸は 15000 あるいは 1.5e+04 などと表示される。これを 1.5×104 などのような指数表示に変更することができる。

まず指数表示のスタイルを変更する関数を作成する。

ScientificNotation <- function(l) {
     l <- format(l, scientific = TRUE)
     l <- gsub("^(.*)e", "'\\1'e", l)
     l <- gsub("e\\+", "%*%10^", l)
     l[1] <- "0"
     parse(text = l)
}

次に ggplot2 を利用してグラフをプロットする。指数表示のスタイルを変更したい座標軸にこの関数を代入する。以下は y 軸の指数表示を変更する例である。

library(ggplot2)

sample <- rep(c("Sample 1", "Sample 2", "Sample 3"), each = 3)
gene   <- rep(c("V1", "V2", "V3"), times = 3)
freq   <- c(15045, 13400, 9041, 17031, 13095, 10391, 14093, 12050, 9404)

dat <- data.frame(sample = sample, gene = gene, frequency = freq)


g <- ggplot(dat, aes(x = gene, y = frequency, fill = sample))
g <- g + geom_bar(stat = "identity", position = "dodge")
g <- g + scale_y_continuous(labels = ScientificNotation)
g <- g + scale_fill_brewer(palette = "Set1")
plot(g)
ggplot2 指数表示のスタイルの変更

References

  1. How do I change the formatting of numbers on an axis with ggplot? stack overflow