[R] Titles changing when a plot is redrawn

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


On Oct 6, 2011, at 2:29 PM, David Winsemius wrote:

>
> 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:
>
> <RMSE.titles.pdf>

Apologies, I take it back. I read you original post incorrectly and  
thought you were having problems with the original plot appearing  
incorrectly. When I do the the resizing I do see the same unexpected  
change to both titles having " i = 2 "
>
>
>> 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.

As I said. I would not have expected this, either. I seem to remember  
this being brought up before, but I was unable to find it on a search.
>
> -- 
> 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 )
>>> }
>>> #-------------------------------------------------
>>>


David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list