[R] Knitr, ggplot and consistent fonts
John Kane
jrkrideau at inbox.com
Mon Dec 23 22:09:45 CET 2013
Thanks, I was not getting anything when I printed the x and so thought I was doing something wrong. Instead I just didn't seem to have a non-ASCII character.
John Kane
Kingston ON Canada
> -----Original Message-----
> From: murdoch.duncan at gmail.com
> Sent: Mon, 23 Dec 2013 15:52:32 -0500
> To: jrkrideau at inbox.com, rmh at temple.edu
> Subject: Re: [R] Knitr, ggplot and consistent fonts
>
> On 13-12-23 1:07 PM, John Kane wrote:
>> 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.
>
> "returned invisibly" means that the result is returned with a flag set
> so it won't automatically print. If you want to print it, you need to
> ask. So any of these will work to see the result:
>
> x <- showNonASCII( .... )
> x
>
> or
>
> print(showNonASCII( .... ))
>
> or even (though this is one some of us don't like, it still works...)
>
> (showNonASCII( .... ))
>
> Duncan Murdoch
>
>> 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!
>> Check it out at http://www.inbox.com/marineaquarium
>>
>>
>
____________________________________________________________
FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!
More information about the R-help
mailing list