[R] [FORGED] Plotting in LaTeX with ggplot2 in R and using tikzdevice
Paul Murrell
paul at stat.auckland.ac.nz
Thu Aug 4 03:48:09 CEST 2016
Hi
You might need an approach that converts the ggplot object to a gtable
and then either combine the gtables as here ...
http://stackoverflow.com/questions/16255579/how-can-i-make-consistent-width-plots-in-ggplot-with-legends
... or explicitly control the width of the plot within the gtable layout
as here ...
http://stackoverflow.com/questions/30571198/how-achieve-identical-facet-sizes-and-scales-in-several-multi-facet-ggplot2-grah/30571289#30571289
Hope that helps
Paul
On 04/08/16 09:20, Ecstasia Tisiphoni 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.
>
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-help
mailing list