आर प्लाट्स में लाटेक्स प्राप्त करना


119

मैं जोड़ना चाहते हैं LaTeXमें भूखंडों के तत्वों के टाइपसेटिंग R(: अक्ष लेबल, एनोटेशन, आदि शीर्षक, जैसे) या तो के संयोजन का उपयोग कर base/latticeया साथ ggplot2

प्रशन:

  • क्या LaTeXइन पैकेजों का उपयोग करके प्लॉट्स में आने का कोई तरीका है, और यदि हां, तो यह कैसे किया जाता है?
  • यदि नहीं, तो क्या इसे पूरा करने के लिए आवश्यक अतिरिक्त पैकेज हैं।

उदाहरण के लिए, संकुल के माध्यम से Python matplotlibसंकलन के रूप में यहाँ चर्चा की गई: http://www.scipy.org/Cookbook/Matplotlib/UnTexLaTeXtext.usetex

क्या ऐसी ही कोई प्रक्रिया है जिसके द्वारा ऐसे भूखंडों को उत्पन्न किया जा सकता है R?


1
यह ट्यूटोरियल आपके लिए काम कर सकता है (मेरे लिए अद्भुत काम किया है :)): r-bloggers.com/latex-in-r-graphs
प्रागद्यति दास

यह पैकेज लाटेक्स को भूखंडों में प्रस्तुत करने में मददगार हो सकता है: github.com/stefano-meschiari/latex2exp
स्टेफानो मेसकियारी

जवाबों:


48

यहाँ एक उदाहरण का उपयोग कर रहा है ggplot2:

q <- qplot(cty, hwy, data = mpg, colour = displ)
q + xlab(expression(beta +frac(miles, gallon)))

वैकल्पिक शब्द


17
दुर्भाग्य से, इसमें लगभग LaTeX की विशेषताएं नहीं हैं।
माइल्स बेकर

अब क्या स्थिति है? मुझे लगता है कि आर 3.1 के साथ इसमें सुधार हुआ है।
लेओ लेपोल्ड हर्ट्ज़ o

35

जैसा कि यहां से चुराया गया है , निम्न कमांड सही ढंग से शीर्षक आकर्षित करने के लिए LaTeX का उपयोग करता है:

plot(1, main=expression(beta[1]))

?plotmathअधिक जानकारी के लिए देखें।


12
दिलचस्प है, डेमो के साथ भी अच्छा सामान (प्लाटमैथ) तो प्लॉटमैथ के सिंटैक्स के माध्यम से गणितीय संकेतन को फिर से व्याख्या करना होगा? यह समय की एक शानदार बर्बादी की तरह लगता है, खासकर यदि आपके पास एक शामिल LaTeX अभिव्यक्ति है। यही कारण है कि मुझे लाटेएक्स को खुद संकलन करने की मैटलपोटलिब की क्षमता पसंद है। क्या ऐसा कुछ है जो LaTeX ले सकता है और प्लॉटमैथ सिंटैक्स उत्पन्न कर सकता है?
ड्रूकेनवे

मेरी जानकारी में नहीं। Rgiki में ggplot2 के साथ काम करने के लिए लेटेक्स प्राप्त करने के बारे में एक दिलचस्प पोस्ट है: wiki.r-project.org/rwiki/…
क्रिस्टोफर डुबोइस

34

CRAN पैकेज लेटेक्स 2 एक्सएक्सएक्स में एक TeXफ़ंक्शन होता है जो आर के प्लॉटमैथ अभिव्यक्तियों के लिए लाटेक्स सूत्रों का अनुवाद करता है। आप इसका उपयोग कहीं भी कर सकते हैं जहां आप गणितीय एनोटेशन, जैसे अक्ष लेबल, लेजेंड लेबल और सामान्य पाठ दर्ज कर सकते हैं।

उदाहरण के लिए:

x <- seq(0, 4, length.out=100)
alpha <- 1:5

plot(x, xlim=c(0, 4), ylim=c(0, 10), 
     xlab='x', ylab=TeX('$\\alpha  x^\\alpha$, where $\\alpha \\in 1\\ldots 5$'), 
     type='n', main=TeX('Using $\\LaTeX$ for plotting in base graphics!'))

invisible(sapply(alpha, function(a) lines(x, a*x^a, col=a)))

legend('topleft', legend=TeX(sprintf("$\\alpha = %d$", alpha)), 
       lwd=1, col=alpha)

इस साजिश का निर्माण करता है


यह भी खूब रही! क्या आप से क्या मतलब समझा सकते हैं लगभग ? वह कैसे काम करता है?
फ्रैंस रोडेनबर्ग

1
लगभग, मेरा मतलब था कि लाटेक्स स्ट्रिंग्स का आर के प्लॉटमैथ एक्सप्रेशंस में अनुवाद किया गया है - जिसका अर्थ है कि अगर प्लमथ एक विशिष्ट एलईटीएक्स प्रतीक का समर्थन नहीं करता है, तो यह या तो प्रदान नहीं किया जाएगा या यह उन प्रतीकों के संयोजन से प्रदान किया जाएगा जो उपलब्ध हैं।
स्टेफानो मेसचीरी

हालांकि यह बहुत अच्छा नहीं है। घृणित दिखता है और यह केवल सीमित संख्या में प्रतीकों का समर्थन करता है। इससे भी बुरी बात यह है कि ऐसा कुछ भी प्रतीत नहीं होता है जो "प्रकाशन गुणवत्ता" भूखंडों के साथ मदद करता है (कुछ ऐसा है जो लोग झूठा दावा करते हैं कि आर सक्षम है)। पाइथन सीखने का समय मुझे लगता है ..
शैवाल

15

आप R: http://r-forge.r-project.org/projects/tikzdevine/ से tikz कोड जनरेट कर सकते हैं


मुझे सिर्फ यह पता है कि पैकेज CRAN से हटा दिया गया था।
शिन गुओ

ऐसा प्रतीत होता है कि पैकेज अभी भी आर-फोर्ज पर उपलब्ध है। इसके अतिरिक्त यह यहां उपलब्ध है: github.com/Sharpie/RTikZDevice
मीका

6

यहाँ मेरी अपनी लैब रिपोर्ट से कुछ है।

  • tickzDeviceके tikzलिए छवियों का निर्यात करता हैLaTeX
  • ध्यान दें, कि कुछ मामलों में "\\"हो जाता है "\"और "$"हो जाता है "$\"निम्नलिखित आर कोड में के रूप में:"$z\\frac{a}{b}$" -> "$\z\frac{a}{b}$\"

  • लेटेक्स कोड के लिए भी निर्यात योग्य तालिकाएँ

कोड:

library(reshape2)
library(plyr)
library(ggplot2)
library(systemfit)
library(xtable)
require(graphics)
require(tikzDevice)

setwd("~/DataFolder/")
Lab5p9 <- read.csv (file="~/DataFolder/Lab5part9.csv", comment.char="#")

AR <- subset(Lab5p9,Region == "Forward.Active")

# make sure the data names aren't already in latex format, it interferes with the ggplot ~  # tikzDecice combo
colnames(AR) <- c("$V_{BB}[V]$", "$V_{RB}[V]$" ,  "$V_{RC}[V]$" , "$I_B[\\mu A]$" , "IC" , "$V_{BE}[V]$" , "$V_{CE}[V]$" , "beta" , "$I_E[mA]$")

# make sure the working directory is where you want your tikz file to go
setwd("~/TexImageFolder/")

# export plot as a .tex file in the tikz format
tikz('betaplot.tex', width = 6,height = 3.5,pointsize = 12) #define plot name size and font size

#define plot margin widths
par(mar=c(3,5,3,5)) # The syntax is mar=c(bottom, left, top, right).

ggplot(AR, aes(x=IC, y=beta)) +                                # define data set 
    geom_point(colour="#000000",size=1.5) +                # use points
    geom_smooth(method=loess,span=2) +                     # use smooth
    theme_bw() +                    # no grey background
    xlab("$I_C[mA]$") +                 # x axis label in latex format
    ylab ("$\\beta$") +                 # y axis label in latex format
    theme(axis.title.y=element_text(angle=0)) + # rotate y axis label
    theme(axis.title.x=element_text(vjust=-0.5)) +  # adjust x axis label down
    theme(axis.title.y=element_text(hjust=-0.5)) +  # adjust y axis lable left
    theme(panel.grid.major=element_line(colour="grey80", size=0.5)) +# major grid color
    theme(panel.grid.minor=element_line(colour="grey95", size=0.4)) +# minor grid color 
    scale_x_continuous(minor_breaks=seq(0,9.5,by=0.5)) +# adjust x minor grid spacing
    scale_y_continuous(minor_breaks=seq(170,185,by=0.5)) + # adjust y minor grid spacing
    theme(panel.border=element_rect(colour="black",size=.75))# border color and size

dev.off() # export file and exit tikzDevice function

4

यहां एक शांत फ़ंक्शन है जो आपको प्लॉटमैथ कार्यक्षमता का उपयोग करने देता है, लेकिन चरित्र मोड की वस्तुओं के रूप में संग्रहीत अभिव्यक्तियों के साथ। यह आपको पेस्ट या नियमित अभिव्यक्ति फ़ंक्शन का उपयोग करके उन्हें प्रोग्रामेटिक रूप से हेरफेर करने देता है। मैं ggplot का उपयोग नहीं करता, लेकिन यह वहाँ भी काम करना चाहिए:

    express <- function(char.expressions){
       return(parse(text=paste(char.expressions,collapse=";")))
    }
    par(mar=c(6,6,1,1))
    plot(0,0,xlim=sym(),ylim=sym(),xaxt="n",yaxt="n",mgp=c(4,0.2,0),
       xlab="axis(1,(-9:9)/10,tick.labels,las=2,cex.axis=0.8)",
       ylab="axis(2,(-9:9)/10,express(tick.labels),las=1,cex.axis=0.8)")
    tick.labels <- paste("x >=",(-9:9)/10)
    # this is what you get if you just use tick.labels the regular way:
    axis(1,(-9:9)/10,tick.labels,las=2,cex.axis=0.8)
    # but if you express() them... voila!
    axis(2,(-9:9)/10,express(tick.labels),las=1,cex.axis=0.8)

2

मैंने इसे कुछ साल पहले सीधे .pdf के बजाय एक .fig प्रारूप में आउटपुट करके किया था; आप लेटेक्स कोड सहित शीर्षक लिखते हैं और अंतिम ग्राफिक फ़ाइल बनाने के लिए fig2ps या fig2pdf का उपयोग करते हैं। मुझे जो सेटअप करना था, वह आर 2.5 के साथ टूट गया; अगर मुझे इसे फिर से करना पड़ा तो मैं इसके बजाय टिक्ज़ में देखूंगा, लेकिन मैं इसे यहाँ एक और संभावित विकल्प के रूप में शामिल कर रहा हूं।

मेरे द्वारा स्वेव का उपयोग करने के तरीके के बारे में मेरे नोट्स यहाँ हैं: http://www.stat.umn.edu/~arendahl/computing



0

मेरे पास सिर्फ एक काम है। कोई पहले एक eps फ़ाइल उत्पन्न कर सकता है, फिर उसे टूल eps2pgf का उपयोग करके वापस pgf में परिवर्तित कर सकता है। Http://www.texample.net/tikz/examples/eps2pgf/ देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.