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 - Fatal编程技术网

R 如何为图形设备设置默认参数?

R 如何为图形设备设置默认参数?,r,R,我喜欢读黑底白字。所以,在R中,我会做一些如下的事情: par (bg = "black") par (fg = "ivory1") 我希望默认设置这些选项。但是,我们不能简单地在.Rprofile中写入这些行,因为据我所知,在执行图形设备时,图形设备尚未初始化。相反,正如中所建议的,应该重新分配options()$device,以包括必要的选项设置。我在这方面没有成功 这就是我所尝试的: ~/.Rprofile -当我运行绘图(某物)时 我的另一个想法是这样做: ~/.Rprofile

我喜欢读黑底白字。所以,在R中,我会做一些如下的事情:

par (bg = "black")
par (fg = "ivory1")
我希望默认设置这些选项。但是,我们不能简单地在
.Rprofile
中写入这些行,因为据我所知,在执行图形设备时,图形设备尚未初始化。相反,正如中所建议的,应该重新分配
options()$device
,以包括必要的选项设置。我在这方面没有成功

这就是我所尝试的:

~/.Rprofile

-当我运行
绘图(某物)

我的另一个想法是这样做:

~/.Rprofile


我没有主意了。你能帮我解决这个问题吗?

一个解决方案似乎是定义一个“钩子”,在创建新绘图时调用它。从
plot.new的文档中:

有两个钩子称为“before.plot.new”和“plot.new”(请参阅 “setHook”)在帧前进前后立即调用。 后者在测试代码中用于注释新页面。这个 调用钩子函数时不带参数。(如果该值为 从“图形”中调用字符串“get” 名称空间。)

以下似乎有效:

setHook("before.plot.new", function(...) {
  par(bg = "black",
    fg = "ivory1",
    col.axis = "ivory1",
    col.lab = "ivory1",
    col.main = "ivory1",
    col.sub = "ivory1")
})

这里的问题是,在处理
.r配置文件
时,
设备
选项尚未设置。
因此,
options()

.First()
函数也会在附加来自
选项(“defaultPackages”)
的包之前执行,因此会出现相同的错误

如果要将某些内容放入
.Rprofile
,则必须如下所示:

setHook(
    packageEvent("grDevices", "onLoad"),
    function(...) {
        f_device <- getOption("device")

        blackdevice <- function(...) {
            f_device(...)
            par(bg = "black")
            par(fg = "ivory1")
        }

        options(device = blackdevice)
    }
)
setHook(
packageEvent(“GR设备”、“空载”),
函数(…){

f_device您选择调用
par
6次而不是一次调用所有参数有什么特别的原因吗?@r2evans不,不是真的,我从问题中复制了前两次;后来添加了其他两次以获得正确的轴和标签。现在已修复。谢谢
.First <- function () {

    options(f_device = options()$device)

    blackdevice <- function (...) {

        options()$f_device(...)

        par (bg       = "black")
        par (fg       = "ivory1")
    }

    options (device = blackdevice)
}
Error in (function (...)  : attempt to apply non-function
setHook("before.plot.new", function(...) {
  par(bg = "black",
    fg = "ivory1",
    col.axis = "ivory1",
    col.lab = "ivory1",
    col.main = "ivory1",
    col.sub = "ivory1")
})
setHook(
    packageEvent("grDevices", "onLoad"),
    function(...) {
        f_device <- getOption("device")

        blackdevice <- function(...) {
            f_device(...)
            par(bg = "black")
            par(fg = "ivory1")
        }

        options(device = blackdevice)
    }
)