[R] Knitr, ggplot and consistent fonts

Duncan Murdoch murdoch.duncan at gmail.com
Mon Dec 23 18:51:43 CET 2013


On 13-12-23 12:40 PM, John Kane wrote:
> Thanks Richard.  I did not realise such a function existed.
>
> Assuming I am using it  correctly I do get an error though not where I was expecting it.  Anyway the code below returns an error
>
> library(tools)
> showNonASCII("ggplot(df, aes(x = x)) + geom_histogram(aes(y = ..density..)), binwidth = 1, colour = "black", fill = "white")")
>
> Results
> Error: unexpected symbol in:
> "showNonASCII("ggplot(df, aes(x = x)) + geom_histogram(aes(y = ..density..)), binwidth = 1, colour = "black"

You get that error because you're using double quotes around a string 
containing double quotes, and not escaping them.  With that string, 
using single quotes on the outside should be fine:

  showNonASCII('ggplot(df, aes(x = x)) + geom_histogram(aes(y = 
..density..)), binwidth = 1, colour = "black", fill = "white")')

Duncan Murdoch
>
>
>
> John Kane
> Kingston ON Canada
>
>
>> -----Original Message-----
>> From: rmh at temple.edu
>> Sent: Mon, 23 Dec 2013 11:44:42 -0500
>> To: jrkrideau at inbox.com
>> Subject: Re: [R] Knitr, ggplot and consistent fonts
>>
>> 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.
>
> ____________________________________________________________
> FREE ONLINE PHOTOSHARING - Share your photos online with your friends and family!
> Visit http://www.inbox.com/photosharing to find out more!
>
> ______________________________________________
> 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