2012-09-20 20 views
15

annotate() kullanarak bir ggplot2 çizimine lateks metni eklemek istiyorum. Eksen etiketlerine lateks eklemek için here açıklandığı gibi expression()'u kullanmak işe yaramıyor. Şöyle ki:Nasıl lateks ile ggplot ek açıklama()

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

Neden expression ler diğer ggplot fonksiyonları tarafından daha annotate tarafından farklı olarak ele alınır? Lateks ile nasıl ekleyebilirim?

+0

'tikzDevice' paketine bir göz atabilirsiniz ... –

+0

Artık aktif olarak kalmayacak gibi görünüyor. (Ama yine de potansiyel olarak yararlı!) –

+1

Benim anlayışım hala oldukça yaygın olarak kullanılan ve işlevsel, ancak daha sıkı CRAN/R CMD kontrol kuralları nedeniyle yetimhanenin şu anki haliyle ... en son R-forge 15 Temmuz tarihinde değiştirildi. 2012 ... –

cevap

13

Sen expression olmadan parse argüman, kullanabilirsiniz:

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

Eğer 'label = ifadeyi kullanmayı denediğinizde alışılmadık bir davranış alıp almadığımı bana bildirir misiniz? (metin [subscript]), ayrıştırma = TRUE) '? (Henüz 0.9.2'ye yükseltmedim ...) – joran

+0

Evet, bundan hoşlanmıyor. –

+0

Tamam, bu sabah hala biraz tuhaf ve bunu ilk defa hatayla yaptım. Daha önce R'den bu tür bir cevap görmemiştim. Tuhaf. – joran

4

tikzDevice paket geri CRAN üzerinde (Kasım 2015 yayınlanan son sürümü 0.9) 'dir.

tikz kullanımı tam bir LaTeX yüklemesini gerektirir; Bir LaTeX belgesinde knitr aracılığıyla yapılması en kolay yol olabilir (yalnızca yığın seçeneklerinde dev="tikz" olarak ayarlayın). Bununla birlikte, bunu bağımsız bir figür oluşturmak için de kullanabilirsiniz. İronik olarak, bu sorunun zor kısmı \textsubscript komut için ek bir LaTeX paketi (fixltx2e) gerektiren bir metin alt simgesi ...

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

latex2exp adında bir R paket var olduğu başlamıştı ki yardımcı olabilir.

library(latex2exp) 
library(ggplot2) 

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

Example

fazla örnek this vignette bulunabilir: Bu örnekte olduğu gibi dolar işareti $ ile kapalı bazı LaTeX ifadeleri kabul işlevi TeX sahiptir.

+5

Örneğiniz etiketler için çalışıyor, ancak soru açıklama eklemekle ilgiliydi. Örneğiniz benim için bir açıklama metninde çalışmıyor, ancak, çıkış = 'karakter' seçeneğini belirlerseniz ve ek açıklama çağrısına 'ayrıştırma' TRUE 'eklerseniz. 'annotate (geom = 'text', x = 3, y = 3, label = Tex (" $ \\ hat {Y} = B_0 + B_1X_1 ", output = 'character'), ayrıştırma = TRUE) ' – svannoy