lindelof
lindelof

Reputation: 35250

Unable to change the global pointsize for lattice displays

I need to produce a series of PDF plots with the Lattice package in R, with a text pointsize mandated by a journal in which it will be published.

Following the discussion here,, I can change the pointsize on a plot by plot basis:

library(lattice)
trellis.device("pdf", pointsize=30)
trellis.par.set(fontsize = list(text = NULL))
xyplot(1:10 ~ 1:10)
dev.off()

This yields the following plot:

But then I try to set a global option:

library(lattice)
lattice.options(default.theme = list(fontsize = list(text = NULL)))
trellis.device("png", pointsize=30)
xyplot(1:10 ~ 1:10)
dev.off()

And this doesn't yield the same results:

enter image description here

So how can I change the global pointsize for all the Lattice plots?

Upvotes: 3

Views: 268

Answers (1)

Johan Larsson
Johan Larsson

Reputation: 3694

Your original question has been answered by jbaums, who suggests using

library(lattice)
lattice.options(default.theme = list(fontsize = list(text = 30)))
trellis.device("pdf")
xyplot(1:10 ~ 1:10)
dev.off()

which produces precisely what you want:

Imgur

In the comments, however, you seem to be asking for a way to set defaults using lattice but then pass settings using dev.args in knitr. The problem is that trellis.device(pdf) calls default.theme and my guess is that this overrides the pointsize = 30 argument you provide. However, if you want to reset this for individual lattice plots it's just a matter of calling par.settings for each individual plot, like so:

\documentclass{article}
\begin{document}

<<setup>>=
library(lattice)
lattice.options(default.theme = list(fontsize = list(text = 8, points = 4)))
@


<<plot, dev='pdf'>>=
xyplot(1:10 ~ 1:10,
       par.settings = list(fontsize = list(text = 25)))
@


<<plot2>>=
xyplot(1:10 ~ 1:10)
@

\end{document}

Upvotes: 3

Related Questions