7

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

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

例如,我可以很容易地在当前设备中设置颜色方案par

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窗口。此外,如果我关闭该窗口,参数将再次重置。我希望能够在每次打开带有例如 RStudio 的默认设备的绘图窗口时默认使用此“颜色方案”。

4

2 回答 2

4

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

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

您还可以使用setHook设置在绘图时运行的钩子函数,但检查哪个设备是当前的可能比它值得做的工作更多。如果在绘图设备启动时可以使用挂钩,那可能是更好的选择。

于 2012-11-20T19:25:09.093 回答
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")
}

看起来这不是最合适的方法吗?

于 2012-11-20T15:00:47.513 回答