[R] Titles changing when a plot is redrawn

David Winsemius dwinsemius at comcast.net
Thu Oct 6 20:29:49 CEST 2011


On Oct 6, 2011, at 8:25 AM, John Nolan wrote:

> Thank you for telling me a fix.
>
> But I still don't know if this behavior is what is intended.  I used  
> bquote(...) because the plotmath(...) help page refers to bquote and  
> gives an example like this.  I suspect most users will be baffled by  
> this kind of behavior, especially since it does not occur when there  
> is one plot.  By this I mean that I can draw one plot and title it  
> with the same string using bquote( ).

It seems to be an infelicity that is not reproducible on Macs:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: RMSE.titles.pdf
Type: application/pdf
Size: 224270 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20111006/9c703b79/attachment.pdf>
-------------- next part --------------



>  If I change the value of i, and redraw the graph, the redrawn graph  
> has the original value of i in the title, not the updated value. So  
> in this case, an unevaluated expression is not re-evaluated at draw  
> time?

I certainly would not have expected redrawing to call any R code  
again. I would have expected the graphics device to do the  
recalculations.

-- 
David.

>
> John
>
>
> -----xieyihui at gmail.com wrote: -----
> To: John Nolan <jpnolan at american.edu>
> From: Yihui Xie
> Sent by: xieyihui at gmail.com
> Date: 10/05/2011 11:49PM
> Cc: r-help at r-project.org
> Subject: Re: [R] Titles changing when a plot is redrawn
>
> I think the problem is your str1 is an unevaluated expression and will
> change with the value of i. You should be able to get a fixed title by
> this:
>
> par(mfrow = c(2, 1))
> for (i in 1:2) {
>    x <- 1:100
>    rmse <- sin(x/5)  # fake data
>    plot(x, rmse, main = substitute(list(RMSE(theta), i == z), list(z  
> = i)))
> }
>
> Regards,
> Yihui
> --
> Yihui Xie <xieyihui at gmail.com>
> Phone: 515-294-2465 Web: http://yihui.name
> Department of Statistics, Iowa State University
> 2215 Snedecor Hall, Ames, IA
>
>
>
> On Wed, Oct 5, 2011 at 10:01 PM, John Nolan <jpnolan at american.edu>  
> wrote:
>> I ran into a problem with titles on graphs.  I wanted a graph with
>> multiple subplots, with each having a title that involved both
>> a Greek letter and an identifier for each graph.  Below is a
>> simplified version of code to do this.  The graph appears fine,
>> with the first graph having "i=1" in the title, and the second
>> graph having "i=2" in the title.  However, when I resize the graph,
>> the plot titles change, with both showing "i=2". The titles also
>> change when I save the plot to a file using the "File" menu,
>> then "Save as" in Windows.  Is this what should happen?  I
>> always thought that titles are static once the graph is
>> drawn, and couldn't change.
>>
>> The problem occurs on some version of R, but not on others.
>> It does occur with the latest version of R:
>>> str(R.Version())
>> List of 13
>> $ platform      : chr "i386-pc-mingw32"
>> $ arch          : chr "i386"
>> $ os            : chr "mingw32"
>> $ system        : chr "i386, mingw32"
>> $ status        : chr ""
>> $ major         : chr "2"
>> $ minor         : chr "13.2"
>> $ year          : chr "2011"
>> $ month         : chr "09"
>> $ day           : chr "30"
>> $ svn rev       : chr "57111"
>> $ language      : chr "R"
>> $ version.string: chr "R version 2.13.2 (2011-09-30)"
>>
>> The problem also occurs on:  R 2.13.0 on Win32
>> and Mac (R 2.12.0, x86_64-apple-darwin9.8.0)
>> The problem DOES NOT occur under R 2.10.0 on Win32.
>>
>> If the code below is bracketed with pdf("test.pdf")
>> and dev.off(), the correct labels appear in the file.
>> This behavior doesn't seem to appear if there is only
>> one plot.
>>
>> My guess is that the titles are being reevaluated when
>> the plot is redrawn, and since the value of i is 2 when
>> the redraw occurs, both labels get set to "i=2".  I guess
>> "Save as" forces a redraw because a dialog box pops up?
>>
>> If could be that this behavior is what is intended, and that
>> somewhere between R 2.10.0 and R 2.13.2 an old bug was fixed.
>> Or this behavior is not what was intended, and a bug was
>> introduced.  If the former, this should be explained to the user
>> somewhere.  If the latter, can someone track it down and fix?
>>
>> John Nolan
>>
>> #-------------------------------------------------
>> par(mfrow=c(2,1))
>> for (i in 1:2) {
>> x <- 1:100
>> rmse <- sin(x/5)  # fake data
>> plot(x,rmse)
>> str1 <- bquote( paste("RMSE(",theta,"), ",i==.(i)  ))
>> title( str1 )
>> }
>> #-------------------------------------------------
>>
>>
>> ...........................................................................
>>
>> John P. Nolan
>> Math/Stat Department
>> 227 Gray Hall
>> American University
>> 4400 Massachusetts Avenue, NW
>> Washington, DC 20016-8050
>>
>> jpnolan at american.edu
>> 202.885.3140 voice
>> 202.885.3155 fax
>> http://academic2.american.edu/~jpnolan
>> ...........................................................................
>> ______________________________________________
>> 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list