-----Original Message-----
From: daniel.haugstvedt at gmail.com
Sent: Sun, 22 Dec 2013 12:42:50 +0100
To: r-help at r-project.org
Subject: [R] Knitr, ggplot and consistent fonts
Dear R-help
I am using Knitr and ggplot to draft an article and have now started
to improve on the layout and graphics. So far I have not been able to
maintain the same font size for labels in all my figures.
My goal is to be able to change the width of the figures while
maintaining the same font. This works for the height parameter
(example not included).
In the true document I also use tikz, but the problem can be
reproduced without it.
I know the question is very specific, but my understanding is that
this combination of packages is common. (They are really great. Keep
up the good work.) There has to be others facing the same problem and
someone must have found a nice solution.
Additional attempts from my side which failed are not included in the
example. I have tested the Google results i could find without any luck.
Cheers
Daniel
PS. I know the example plots could have been smaller, but they just
became too ugly for me
\documentclass{article}
\begin{document}
<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
library(ggplot2)
@
\title{Knitr and ggplot2}
\author{Daniel Haugstvedt}
\maketitle
There are four plots in this article. Figure \ref{fig:plot-figHeight}
uses the argument fig.height=2.5 while Figures \ref{fig:plot-figWidth}
used both fig.height=2.5 and fig.width=3. The later option makes the
font too big.
An alternative approach is used in Figures
\ref{fig:plot-figOutWidthBig} and \ref{fig:plot-figOutWidthSmall}.
There the argument out.width is set to
12 and 8 cm respectively. This stops the problem of excessively large
fonts for figures with smaller width, but there is still no
consistency across plots in terms of font size.
<<plot-figHeight, echo=FALSE, fig.height=2.5, fig.cap="Density plot
with no fig.width argument", fig.pos='ht'>>= df = data.frame(x =
rnorm(100), y = 1:100) ggplot(df, aes(x = x)) +
geom_histogram(aes(y = ..density..),
binwidth = 1, colour = "black", fill = "white") +
xlab("Improvement, %") +
ylab("Density") +
theme_classic()
@
<<plot-figWidth, echo=FALSE, fig.height=2.5, fig.width = 3,
fig.cap="Density plot with fig.width=3", fig.pos='ht'>>= ggplot(df,
aes(x = x)) +
geom_histogram(aes(y = ..density..),
binwidth = 1, colour = "black", fill = "white") +
xlab("Improvement, %") +
ylab("Density") +
theme_classic()
@
<<plot-figOutWidthBig, echo=FALSE, fig.height=2.5, out.width = "12cm",
fig.cap="Density plot with out.width=12cm", fig.pos='ht'>>= ggplot(df,
aes(x = x)) +
geom_histogram(aes(y = ..density..),
binwidth = 1, colour = "black", fill = "white") +
xlab("Improvement, %") +
ylab("Density") +
theme_classic()
@
<<plot-figOutWidthSmall, echo=FALSE, fig.height=2.5, out.width =
"8cm", fig.cap="Density plot with out.width=8cm", fig.pos='ht'>>=
ggplot(df, aes(x = x)) +
geom_histogram(aes(y = ..density..),
binwidth = 1, colour = "black", fill = "white") +
xlab("Improvement, %") +
ylab("Density") +
theme_classic()
@
\end{document}
[[alternative HTML version deleted]]