7

为了简化我的日常 R 交互,我想为我的所有绘图设置默认颜色。例如,假设我想用红线制作所有图(如 gnuplot...:-))

到目前为止,这是我的 .Rprofile 的片段

setHook(packageEvent("grDevices", "onLoad"), 
    function(...) 
        grDevices::X11.options(width = 14, height = 8, type = "Xlib", xpos = 600,     ypos = 30, canvas = "grey87"))

suppressPackageStartupMessages( require(Defaults) )
suppressPackageStartupMessages( require(utils) )
suppressPackageStartupMessages( require(graphics) )

setDefaults("plot.default",frame.plot=FALSE, type='l', col=2)

我在这里所做的如下:grDevices加载包时(通过加载graphics包),我X11.options使用我喜欢的参数调用:更宽的框,浅灰色背景,xlib 调用(因为我正在进行远程调用,而 cairo in我当前的环境太慢了(另一个需要解决的问题))然后我默默地加载了 3 个包Defaultsutilsgraphics. 需要第二个来避免find函数错误消息。

最后,魔术函数setDefaults为散点图函数设置了 3 个参数plot.default。第三个参数col不是函数的参数,plot.default而是par()函数的一个参数。

但是,setDefaults打电话par也不起作用。

欢迎任何解决方案...

4

2 回答 2

7

每次打开新的图形框架时,您都可以使用该"plot.new"挂钩设置默认值。par(钩子的工作方式记录在?plot.new?setHook

在您的情况下,只需将此行添加到您的 .Rprofile 中:

setHook("plot.new", function() par(col = "red"))
于 2012-09-27T20:07:23.793 回答
3

颜色等参数是基于每个设备设置的,因此当您关闭一台设备并创建新设备时,所有参数都会设置回其默认值。为此,我将创建您自己的设备功能,打开设备然后设置参数,例如:

mydev.new <- function(...) {
  dev.new(...)
  par(col='red')
}

您显然可以替换dev.newx11或其他东西,但这可能是最便携的。现在您可以使用打开一个新设备mydev.new,默认颜色将设置为红色。

此外,如果您运行命令

options(device=mydev.new)

然后,当您没有打开图形设备并运行绘图命令时,您的函数将运行以打开新的绘图设备,因此在这种情况下默认值也将为红色。您可以扩展该mydev.new函数(或任何您想调用的函数)以针对您可能想要使用的不同情况设置其他选项、​​获取参数等。

于 2012-09-27T19:01:18.137 回答