Hatena::ブログ(Diary)

My Life as a Mock Quant このページをアンテナに追加 RSSフィード Twitter

2016-03-27

ggplot2の軸を上付きのべき乗で書きたい

| 17:08 | ggplot2の軸を上付きのべき乗で書きたいを含むブックマーク

そういうことです。

今のところの私の答えは以下で

  • breaksでちゃんとX軸のどれを書くかを指定
  • trans_formatでべき乗表示に変換

です。

ggplot(data=data.frame(x=10^(1:4), y=1:4), aes(x=x, y=y)) + 
  scale_x_log10(breaks=10^(1:4), labels=trans_format('log10',math_format(10^.x)))+geom_point()

f:id:teramonagi:20160327170408p:image


以下、途中の試行錯誤

breaks指定なし+横軸LOGにしない場合

横軸の値があまりにいけてないマンになる。

ggplot(data=data.frame(x=10^(1:4), y=1:4), aes(x=x, y=y)) + 
  scale_x_continuous(labels=trans_format('log10',math_format(10^.x)))+geom_point()

f:id:teramonagi:20160327170407p:image

横軸をlog10にしない場合

さすがに見辛い

ggplot(data=data.frame(x=10^(1:4), y=1:4), aes(x=x, y=y)) + 
  scale_x_continuous(breaks=10^(1:4), labels=trans_format('log10',math_format(10^.x)))+geom_point()

f:id:teramonagi:20160327170406p:image

fancy_scientificをパクる場合

を参考にマルっとfancy_scientific関数をもらってきてからのPLOT。

breaksを陽に指定できない場合はこれでよい気もする。

fancy_scientific <- function(l) { 
  # turn in to character string in scientific notation 
  l <- format(l, scientific = TRUE) 
  # quote the part before the exponent to keep all the digits 
  l <- gsub("^(.*)e", "'\\1'e", l) 
  # turn the 'e+' into plotmath format 
  l <- gsub("e", "%*%10^", l) 
  # return this as an expression 
  parse(text=l) 
} 
ggplot(data=data.frame(x=10^(1:4), y=1:4), aes(x=x, y=y)) + 
  scale_x_continuous(labels=(labels=fancy_scientific))

f:id:teramonagi:20160327170405p:image

トラックバック - http://d.hatena.ne.jp/teramonagi/20160327/1459066096
リンク元