52

を使用して、ラテックステキストをggplot2プロットに追加したいと思いますannotate()軸ラベルにラテックスを追加するためにここexpression()で説明されているように、を使用すると、機能しないようです。ウィットに:

# 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") 

sが他のggplot関数とはexpression異なる方法で処理されるのはなぜですか?annotateそして、どうすればラテックスで注釈を付けることができますか?

4

3 に答える 3

60

役に立つかもしれないRと呼ばれるパッケージがあります。この例のように、ドル記号で囲まれたいくつかのLaTeX式を受け入れるlatex2exp関数があります。TeX$

library(latex2exp)
library(ggplot2)

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

例

このビネットには、さらに多くの例があります。

于 2016-11-10T13:11:39.813 に答える
23

parse引数なしで使用できますexpression

p + annotate("text", x=10, y=40, label="text[subscript]", parse=TRUE)
于 2012-09-20T14:32:46.237 に答える
16

tikzDeviceパッケージがCRANに戻ってきました(2015年11月に公開された最新バージョン0.9)。

使用tikzするには、完全なLaTeXインストールが必要です。knitrLaTeXドキュメント内で行うのが最も簡単な場合があります(dev="tikz"チャンクオプションで設定するだけです)。ただし、これを使用してスタンドアロンのフィギュアを作成することもできます。皮肉なことに、この質問の最も難しい部分は、テキストの添え字を取得することでした。これには、コマンドfixltx2e用に追加のLaTeXパッケージ()が必要です...\textsubscript

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")

ここに画像の説明を入力してください

于 2015-12-19T15:42:11.360 に答える