我喜欢读黑色的白色.因此,在RI中可以采取以下措施:
par (bg = "black")
par (fg = "ivory1")
Run Code Online (Sandbox Code Playgroud)
我希望默认情况下设置这些选项.但是,人们不会简单地写入这些行,.Rprofile
因为据我所知,在执行它时,图形设备尚未初始化.相反,正如另一个答案中所建议的那样,应该重新分配options()$device
以包括必要的选项设置.我没有成功.
这是我试过的:
~/.Rprofile
f_device <- options()$device
blackdevice <- function (...) {
f_device(...)
par (bg = "black")
par (fg = "ivory1")
}
options (device = blackdevice)
Run Code Online (Sandbox Code Playgroud)
这里的想法是将原始device
函数保存到另一个变量,然后从我的新device
函数中调用它.我得到的是:
Error in f_device(...) : could not find function "f_device"
Run Code Online (Sandbox Code Playgroud)
- 在我跑的时候plot (something)
.
我的另一个想法是这样:
~/.Rprofile
.First <- function () {
options(f_device = options()$device)
blackdevice <- function (...) {
options()$f_device(...)
par (bg = "black")
par (fg = "ivory1")
}
options (device = blackdevice)
}
Run Code Online (Sandbox Code Playgroud)
- 在原来的device
其他地方分配原件options
.但这会导致:
Error in (function (...) : attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)
我没有想法.你能帮我搞清楚吗?
Jan*_*aan 13
一种解决方案似乎是定义在创建新绘图时调用的"钩子".来自以下文件plot.new
:
在推进帧之前和之后立即调用了两个名为'"before.plot.new"'和'plot.new''(参见'setHook')的钩子.后者用于测试代码以注释新页面.不使用参数调用钩子函数.(如果值是字符串,则从'graphics'命名空间中调用'get'.)
以下似乎有效:
setHook("before.plot.new", function(...) {
par(bg = "black",
fg = "ivory1",
col.axis = "ivory1",
col.lab = "ivory1",
col.main = "ivory1",
col.sub = "ivory1")
})
Run Code Online (Sandbox Code Playgroud)
您的问题是处理device
时尚未设置该选项。
因此,正是在这一点上,这导致了您所观察到的错误。.Rprofile
options()$device
NULL
该.First()
函数也会在options("defaultPackages")
附加包之前执行,因此会出现相同的错误。
如果你想在 中放入一些东西.Rprofile
,它必须是这样的:
setHook(
packageEvent("grDevices", "onLoad"),
function(...) {
f_device <- getOption("device")
blackdevice <- function(...) {
f_device(...)
par(bg = "black")
par(fg = "ivory1")
}
options(device = blackdevice)
}
)
Run Code Online (Sandbox Code Playgroud)
请注意,这是标准 R GUI 的解决方案,但不适用于例如 RStudio,后者随后设置自己的"RStudioGD"
设备(并且要求已加载)。grDevices
(这也解释了重新定义以使其在搜索路径上领先的尴尬方法(来自您链接"RStudioGD"
的.Rprofile
问题"tools:rstudio"
)
归档时间: |
|
查看次数: |
365 次 |
最近记录: |