RigelのR言語メモであーる(R言語だけとは言っていない)

RigelのR言語メモであーる(主にpython)

興味あることや趣味、やったことについて書くよ

Rのグラフの注釈で、TEXのような数式表現を使う

Rのグラフの注釈に、数式表現を入れたいと思ったことはありませんか?
例えば、なんらかの密度関数をプロットして、数式を書きたいときとか。
もちろんそんなことは後からRの外で書けばいいんですが、
やっぱりRの中だけで完結したい!!
そんなときに役立つメモ。

baseパッケージのtext関数を使う

baseパッケージのtext関数でも数式表現はある程度書けますが自由度が低いです。
text関数では、labelはcharacter型かexpression型でなくてはいけません。
expression型でも、上つき添字、下つき添字、ギリシャ文字、分数等の極僅かな数式表現のみ可能です。
なので、実質text関数では無理だと思われます。

ggplot2パッケージのannotate関数を使う

次にannotate関数を使う方法です。
この関数はggplot2で作成したグラフに注釈を入れる関数です。
annotate関数の引数でparse=TRUEとすると、labelがTEXのように扱われます。
私は正直ggplot2は苦手ですが、あっさり書くことができました。
以下、正規分布の密度関数をプロットして、注釈として数式書くRコードです。

library(ggplot2)
p<-ggplot(data.frame(x=c(-3,3)),aes(x=x))+stat_function(fun=dnorm)
p+annotate("text",x=2,y=0.3,parse=TRUE,label="frac(1,sqrt(2*pi))*e^{-x^2/2}")

f:id:strawberry_kyon:20170908141055p:plain
簡単ですね!!

参考図書

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集