[R] Knitr, ggplot and consistent fonts

John Kane jrkrideau at inbox.com
Mon Dec 23 19:07:51 CET 2013


Thanks  Duncan.  
I had the feeling I was doing something wrong but did not realise it was that stupid.

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

now runs and does what the help page seems to imply: Nothing.

From the showNonASCII help page:
"The elements of x containing non-ASCII characters will be returned invisibly. "

One gets a result one does not see?  Does one have to explicitly capture the result somehow?  I really have not the faintest idea of what the example from the help page is doing.

John Kane
Kingston ON Canada


> -----Original Message-----
> From: murdoch.duncan at gmail.com
> Sent: Mon, 23 Dec 2013 12:51:43 -0500
> To: jrkrideau at inbox.com, rmh at temple.edu
> Subject: Re: [R] Knitr, ggplot and consistent fonts
> 
> 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.
>> 
>

____________________________________________________________
FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!



More information about the R-help mailing list