2012-09-20 4 views
15

annotate()を使用してggplot2プロットにラテックステキストを追加したいと思います。 expression()を使用すると、軸ラベルにラテックスを添加するためのhereのように機能していないようです。ウィットに:ラテックスでggplotをアノテートする方法

# Use expression() to create subscripted text 
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() + 
    scale_x_continuous(expression(text[subscript])) 

# But expression() in annotate adds nothing to the plot 
p + annotate("text", x=10, y=40, label=expression(text[subscript])) 

# Passing regular text to annotate works fine 
p + annotate("text", x=10, y=40, label="foo") 

はなぜexpression sが他のggplot機能によって、よりannotateによって異なる扱いをされますか?ラテックスにはどのように注釈を付けることができますか?

+0

あなたは 'tikzDevice'パッケージを見てみるかもしれません... –

+0

もうアクティブに維持されていないようです。 (しかしまだ潜在的に有用です!) –

+1

私は、CRAN/RのCMDチェックルールが厳格になっているため、孤児院の現状ではまだかなり広く使用されていますが、それが機能していると私は理解しています。 2012 ... –

答えて

13

あなたはexpressionせずに、parse引数を使用することができます。

p + annotate("text", x=10, y=40, label="text[subscript]", parse=TRUE) 
+0

'label = expressionを使用すると異常な動作が発生するかどうかを確認できますか(テキスト[添字])、解析= TRUE) '? (私はまだ0.9.2にアップグレードしていない...) – joran

+0

ええ、それはそれが好きではありません。 –

+0

オクラホマ...今朝も少しひどいです。私は間違って初めてそれをやりました。以前はRのような反応を見たことはありませんでした。奇妙な。 – joran

4

tikzDeviceパッケージはバックCRAN(2015年11月公開される最新バージョン0.9)です。

tikzを使用するには完全なLaTeXインストールが必要です。 LaTeX文書内でknitr経由で行うのが最も簡単です(ちょうどチャンクオプションでdev="tikz"に設定されています)。ただし、これを使用してスタンドアロンのFigureを作成することもできます。皮肉なことに、この質問の最も難しい部分は...

library(tikzDevice) 
## add a package to the defaults 
options(tikzLatexPackages= 
      c(getOption("tikzLatexPackages"),"\\usepackage{fixltx2e}")) 
tikz("tikz.tex",standAlone=TRUE) 
library("ggplot2"); theme_set(theme_bw()) 
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() + 
    scale_x_continuous(name="text\\textsubscript{subscript}") 
p + annotate("text", x=10, y=40, label="text\\textsubscript{subscript}") 
dev.off() 

system("pdflatex tikz.tex") 

enter image description here

14

\textsubscriptコマンドの追加のLaTeXのパッケージ(fixltx2e)が必要ですテキスト添字を、取得されたlatex2expと呼ばれるRパッケージがあります役に立つかもしれません。

library(latex2exp) 
library(ggplot2) 

qplot(1, "A")+ 
    ylab(TeX("Formula: $\\frac{2hc^2}{\\lambda^\\beta}$"))+ 
    xlab(TeX("$\\alpha$")) 

Example

より多くの例がthis vignetteで見つけることができます:それは、この例のようにドル記号$で囲まれたいくつかのLaTeXの式を受け付ける関数TeXを持っています。

+5

あなたの例はラベルでは機能しますが、注釈に関する質問がありました。あなたの例は、私のための注釈層では動作しませんが、output = 'character'を指定し、注釈呼び出しに 'parse = TRUE'を追加すると、それが実行されます。 注釈(geom = 'text'、x = 3、y = 3、ラベル= Tex( "$ \\ hat {Y} = B_0 + B_1X_1"、出力= '文字')、解析= TRUE) ' – svannoy

関連する問題