设置设备的默认图形参数

时间:2012-11-20 13:21:16

标签: r graphics

我经常喜欢在IDE中使用深色背景colortheme上的浅色文本。当我在R中绘制某些内容时,绘图的默认颜色方案是白色背景上的黑色文本/边框/点。我在默认情况下尝试更改此设置,最好是默认情况下从R调用的特定设备(X11cairoRStudioGD),同时保持“输出”设备的正常默认设置,例如pdfpng

我的问题有两个:(1)如何设置默认图形参数? (2)我是否可以仅针对特定设备执行此操作?

例如,我可以使用par轻松设置当前设备中的colorscheme:

par(
  bg = "black",
  col = "white",
  col.axis = "white",
  col.lab = "white",
  col.main = "white",
  col.sub = "white")

plot(1)

按预期方式在黑色图上创建白色,并按预期重置设备将返回默认值:

dev.off()
plot(1)

我尝试将以下内容放入.Rprofile

graphics:::par(
  bg = "black",
  col = "white",
  col.axis = "white",
  col.lab = "white",
  col.main = "white",
  col.sub = "white")
graphics:::plot(1,type="n",xlab="",ylab="",axes=FALSE)
graphics:::text(1,1,"Plotting area")

在某种程度上有效,除了它在启动时打开一个绘图窗口,这可能是令人讨厌的,在RStudio中它不会打开RStudio设备而是打开x11窗口。此外,如果我关闭该窗口,参数将再次重置。我希望每次打开一个绘图窗口时默认使用这个“colorscheme”,例如RStudio的默认设备。

2 个答案:

答案 0 :(得分:4)

图形参数在设备的生命周期中持续存在,这就是为什么当您关闭图形设备并开始新的绘图时,它们会重置它们。

您想要做的最好的方法可能是为要更改默认值的设备编写包装函数。此功能将启动感兴趣的设备并为您设置默认参数。然后,您可以使用options(device=mygrdevice)将您的功能设置为默认设备,其中mygrdevice是自定义功能。然后,如果没有设备打开并且您发出绘图命令,您的功能将运行,打开设备并设置默认值。但是如果你打开一个不同的设备,如pdf或png,那么常规默认设置就会到位。

你也可以使用setHook来设置一个钩子函数,以便在绘图时运行,但是检查哪个设备是最新的可能比它的价值更多。如果绘图设备启动时可以使用挂钩,那么这可能是更好的选择。

答案 1 :(得分:0)

至少我为RStudio设备做了一个答案,但这有点乱。我可以在.Rprofile中覆盖设备功能,以便在打开后更改par设置:

RStudioGD <- function()
{
  .Call("rs_createGD")
  graphics:::par(
       bg = "black",
       col = "white",
       col.axis = "white",
       col.lab = "white",
       col.main = "white",
       col.sub = "white")
}

虽然这似乎不是最合适的方法吗?