[R] Plotting in LaTeX with ggplot2 in R and using tikzdevice

Richard M. Heiberger rmh at temple.edu
Fri Aug 5 06:19:43 CEST 2016


I suggest the microplot package that I placed on CRAN several weeks ago.

Description:

     Prepare lists of R graphics files to be used as microplots
     (sparklines) in tables in either LaTeX or HTML files.  For LaTeX
     use the Hmisc::latex() function or xtable::xtable() with Sweave,
     knitr, rmarkdown, or Emacs org-mode to construct latex tabular
     environments which include the graphs.  For HTML files use either
     Emacs org-mode or the htmlTable::htmlTable() function to construct
     an HTML file containing tables which include the graphs.  Examples
     are shown with lattice graphics, base graphics, and ggplot2
     graphics.  Examples for LaTeX include Sweave (both LaTeX-style and
     Noweb-style), knitr, emacs org-mode, and rmarkdown input files and
     their pdf output files.  Examples for HTML include org-mode and
     Rmd input files and their webarchive HTML output files.  In
     addition, the as.orgtable function can display a data.frame in an
     org-mode document.

For your task, the idea would be to construct a multi-panel plot using ggplot
and then capture each panel into a separate pdf file.
The files would then all be scaled identically.
Capture the legend material into a separate pdf file.
Use the as.includegraphics function on each pdf filename
and place the resulting strings into a LaTeX table with the
Hmisc::latex function.

Please see the vignette included with the microplot package for details.
    vignette("rmhPoster", package="microplot")
The vignette is my poster session from the useR conference last month
at Stanford.
The complete R code for all examples in the vignette is in file
    paste0(system.file(package="microplot"), "/doc/rmhPoster.R")

The vignette and the examples use lattice.

A simple working example using ggplot is included in the ?microplot help file.
Simple working examples are also shown for base graphics and for all the
output options listed in the Description.

Rich


On Wed, Aug 3, 2016 at 5:20 PM, Ecstasia Tisiphoni <ecstasia1 at gmail.com> wrote:
> Hello,
> not totally sure if this is a R or a LaTeX topic...
>
> I am a total newbie to R and LaTeX, and trying to write my masters
> thesis right now... I tried to get this answered via
> https://cran.r-project.org/web/packages/tikzDevice/vignettes/tikzDevice.pdf
>  ...but I failed... :(
>
> I am creating plots in R via ggplot2, and converting them to TeX
> format via tikzDevice.
>
> Now many of my plots have a legend on the right, which differs in size
> (depending of course on the legend title and text).
>
> If I now convert my Rplot using tikz() it only scales the size for the
> whole image it creates.
>
> What I want is: the rectangular plot itself to always be the same size
> for all my plots (no matter how big/small the legend and the axis
> numbers are)...
>
> My Rscript with some test Data:
>
> library(ggplot2)
> library(scales)
> require(grid)
> library(tikzDevice)
>
>
> #setting time zone
> options(tz="Europe/Berlin")
>
> tikz(file = "my_output_file.tex", standAlone=F,width = 6, height = 3)
>
>
> cars['dt'] = seq(Sys.Date(),Sys.Date()-980,-20)
> plot <- ggplot(cars,aes(y=speed,x=dist,color=as.integer(dt)))+
>                geom_point(size=2,alpha=0.7)+
>                xlab("distance")+
>                ylab("speed")+
>                scale_color_gradientn("dt",
>                                      colours=rainbow(6)
>                                      )+
>
> #textsize
> theme_bw()+
> theme(legend.position="right",
>       legend.key.height=unit(2,"lines"),
>       legend.title=element_text(size=rel(0.8)),
>       legend.text=element_text(size=rel(0.8)),
>       axis.text.y=element_text(angle=90,
>                                hjust=0.5),
>       axis.title=element_text(size=rel(0.8))
>  )
>
> print(plot)
>
> dev.off()
>
>
> If I change now the legend text to a slightly longer text, the output
> of course has a completely different plot-size.
> Is there a way to maintain the plot size?
>
> I hope somebody can help me, or lead me to the information I need...
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list