[R] Set window title for plot on any OS
Simon Zehnder
szehnder at uni-bonn.de
Sun Jul 14 12:42:35 CEST 2013
Haha, good point!
So, the correct code is:
any(names(formals(getOption("device"))) == "title") {
dev.new(title = "title")
}
Thanks for correcting my approach Rolf!
Best
Simon
On Jul 14, 2013, at 1:02 AM, Rolf Turner <rolf.turner at xtra.co.nz> wrote:
>
>
> 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