[R] Knitr, ggplot and consistent fonts

Richard M. Heiberger rmh at temple.edu
Mon Dec 23 17:44:42 CET 2013


If the problem seems to be non-ASCII characters, then the first investigation
step is to use the R functions

?tools::showNonASCII
?tools::showNonASCIIfile

On Mon, Dec 23, 2013 at 11:37 AM, John Kane <jrkrideau at inbox.com> wrote:
> Same result here with the same error message mentioned in my first post.  I tried it in Texmaker which is my usual Latex editor, not that I do much in Latex, and then tried it in RStudio and it is still choking.
>
> Interestingly EMACS will process it and produce a pdf but it simply produces.  It also provides this warning: : Latex Warning; Reference 'fig:plot-figheight' undefined on page 2 on input line 14.
>
> It seems to repeat the same message for each of the other figures.
>
> John Kane
> Kingston ON Canada
>
>
>> -----Original Message-----
>> From: dulcalma at bigpond.com
>> Sent: Mon, 23 Dec 2013 22:28:33 +1000
>> To: daniel.haugstvedt at gmail.com, r-help at r-project.org
>> Subject: Re: [R] Knitr, ggplot and consistent fonts
>>
>> Hi Dan
>>
>>
>>
>> I think you still have problems with embedded characters or some problems
>> in
>> char code page conversion or the like.
>>
>>
>>
>> Not knowing knitr but Sweave I cobbled the figures manually and ran the
>> sweave file to produce the latex file.
>>
>> Latex was consistently stopping at the \caption and \ref functions
>>
>> I tried to see what was happening I added hyperref & when I copied the
>> text
>> to hyperref  latex bailed up
>>
>>
>>
>> I tried a minimal latex file without problems
>>
>>
>>
>> I put the \title etc in the preamble. Some compilers need this
>>
>>
>>
>> Duncan
>>
>>
>>
>> From: Daniel Haugstvedt [mailto:daniel.haugstvedt at gmail.com]
>> Sent: Monday, 23 December 2013 20:10
>> To: Duncan Mackay
>> Cc: John Kane; R
>> Subject: Re: [R] Knitr, ggplot and consistent fonts
>>
>>
>>
>> I am really sorry for posting a non-working example. It is running when I
>> cut the code from my previous mail into a clean session in RStudio (OSX).
>> However, I suspect that you are right. I did cut and paste some code from
>> a
>> forum yesterday which had characters that had to be replaced. I gave
>> emacs a
>> try, but could not find the problem there either.
>>
>>
>>
>> The code below was pasted though textEdit and converted to plain text. I
>> hope this takes care of any embedded characters.
>>
>>
>>
>> \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 o font size.
>>
>>
>>
>> <<plot-figHeight, echo=FALSE, fig.height=2.5, fig.cap="Density plot with
>> no
>> fig.width argument", results='hide', 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}
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Sun, Dec 22, 2013 at 11:59 PM, Duncan Mackay <dulcalma at bigpond.com>
>> wrote:
>>
>> Hi Daniel
>> I tried it in Sweave after modifying it for Sweave and a similar thing
>> for
>> Latex but R crashed.
>>
>> I think there is an embedded character/s before the first chunk and in
>> the
>> first chunk.
>>
>> Duncan
>>
>> Duncan Mackay
>> Department of Agronomy and Soil Science
>> University of New England
>> Armidale NSW 2351
>> Email: home: mackay at northnet.com.au
>>
>>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
>> On
>> Behalf Of John Kane
>> Sent: Monday, 23 December 2013 04:19
>> To: Daniel Haugstvedt; r-help at r-project.org
>> Subject: Re: [R] Knitr, ggplot and consistent fonts
>>
>> Hi Daniel,
>>
>> For some reason I cannot get your example to work. The problem is in the
>> code chunk but I have no idea what is happening. The code is running
>> perfectly in R, itself but LaTeX seems to be choking when it hits the
>> first
>> ggplot statement, that is the one in <<plot-figHeight>>=
>>
>> The message I am getting is: "Missing $ inserted <inserted text> $
>> ggplot(df, aes(x=x)) = geom_" and my knowledge of LateX is not enough to
>> figure out the problem.
>>
>> I tried stripping out most of the LaTeX specific verbiage in the code
>> chunk
>> and running the code in LyX which I use rather than plain vanilla LaTeX
>> and
>> I still cannot get it to work. It is almost as if there is some hidden
>> character in the in that piece of code since I can duplicate the code
>> myself
>> and I even pasted in most of the geom_histogram code into my code chunk
>> and
>> it runs.
>>
>> John Kane
>> Kingston ON Canada
>>
>>
>>> -----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]]
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> 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.
>>
>> ____________________________________________________________
>> GET FREE SMILEYS FOR YOUR IM & EMAIL - Learn more at
>> http://www.inbox.com/smileys Works with AIMR, MSNR Messenger, Yahoo!R
>> Messenger, ICQR, Google TalkT and most webmails
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> 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.
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> 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.
>>
>>
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> 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.
>
> ____________________________________________________________
> FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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