Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 设置设备的默认图形参数_R_Graphics - Fatal编程技术网

R 设置设备的默认图形参数

R 设置设备的默认图形参数,r,graphics,R,Graphics,我通常更喜欢在IDE中使用深色背景颜色的浅色文本主题。当我在R中绘图时,绘图的默认配色方案是白色背景上的黑色文本/边框/点。我试图在默认情况下改变这一点,最好是针对默认情况下从R调用的特定设备(X11cairo,RStudioGD),同时保持“输出”设备(如pdf和png)的正常默认值 我的问题有两个:(1)如何设置默认图形参数?(2)我可以只为特定的设备这样做吗 例如,我可以使用par轻松设置当前设备中的配色方案: par( bg = "black", col = "white",

我通常更喜欢在IDE中使用深色背景颜色的浅色文本主题。当我在R中绘图时,绘图的默认配色方案是白色背景上的黑色文本/边框/点。我试图在默认情况下改变这一点,最好是针对默认情况下从R调用的特定设备(
X11cairo
RStudioGD
),同时保持“输出”设备(如
pdf
png
)的正常默认值

我的问题有两个:(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的默认设备。

我自己确实为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")
}

RStudioGD图形参数在设备的使用寿命内都有效,这就是为什么当您关闭图形设备并开始新绘图时,会看到这些参数重置的原因

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


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

这并不能回答您的问题,但我的解决方案是在my
.Rprofile
中有一个
setnicepar
函数。只需在每次绘图时将长
par
代码减少到
setnicepar()
,是的,我的
setnicepar
可以用参数调用。例如,
setnicepar(mfrow=c(2,2))