[R] Set window title for plot on any OS

Rolf Turner rolf.turner at xtra.co.nz
Sun Jul 14 01:02:19 CEST 2013



I think you ought to take a look at

     fortune("Lewis Carroll")

     cheers,

         Rolf Turner

On 14/07/13 01:45, Simon Zehnder wrote:
> Hi Duncan,
>
> thank you very much for your advice! That makes it all work.
>
> I check in addition for a "title" argument in the device via
>
> if (any(names(getOption("device")) == TRUE)) {
> 	dev.new(title = "title")
> }
>
> Thanks again!
>
> Simon
>
> On Jul 13, 2013, at 2:40 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
>
>> On 13-07-13 1:33 PM, Simon Zehnder wrote:
>>> Dear R-Users,
>>>
>>> I am writing a package using S4 classes. In the generic method "plot" I want to set the title for the plotting window as I will have several windows and window titles help the users to distinguish the graphics without putting a title into the plot itself (this can be done by users whenever they want)
>>>
>>> So I created a helper function .setDeviceTitle which I called after the plot has been done:
>>>
>>> ".setDeviceTitle" <- function(title = "title", dev = dev.cur()) {
>>> 	dev <- names(dev)[1]
>>> 	
>>> 	## check for OS ##
>>> 	if (dev == "windows") {
>>> 		windows(title = title)
>>> 	} else if (dev == "X11") {
>>> 		X11(title = title)
>>> 	} else {
>>> 		quartz(title = title)
>>> 	}
>>> }
>>>
>>> The result is a new device with the title in addition to the old. Is it possible to give a window a title after the plot has been done? If not: Before I plot the device I cannot know what device it will be, so I thought about a check via capabilities():
>>>
>>> if (any(names(capabilities()) == "X11")) {
>>> 	X11(title = title)
>>> }
>>> else if (any(names(capabilities)) == "windows") {
>>> 	windows(title = title)
>>> } else {
>>> 	quartz(title = title)
>>> }
>>>
>>> I want to have a safe method, which works on each OS R can run. How would you solve the problem?
>> Use dev.new() rather than picking a particular device.  If all the possible devices support the "title" argument, then
>>
>> dev.new(title=title)
>>
>> will be fine.  If you might need more customization (or want to protect against a user who chooses a device that doesn't have "title" as an argument), use getOption("device") to examine the call that will be used.
>>
>> Duncan Murdoch
>>



More information about the R-help mailing list