[R] Knitr, ggplot and consistent fonts

John Kane jrkrideau at inbox.com
Mon Dec 23 18:40:48 CET 2013


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"



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!



More information about the R-help mailing list