【问题标题】:How to set a color by default in R for all plot.default, plot or lines calls如何在 R 中为所有 plot.default、plot 或 lines 调用默认设置颜色
【发布时间】:2012-09-19 12:10:56
【问题描述】:

为了简化我的日常 R 交互,我想为我的所有绘图设置默认颜色。例如,假设我想用红线绘制所有图(就像在 gnuplot...:-) 中)

到目前为止,这是我的 .Rprofile 的 sn-p

setHook(packageEvent("grDevices", "onLoad"), 
    function(...) 
        grDevices::X11.options(width = 14, height = 8, type = "Xlib", xpos = 600,     ypos = 30, canvas = "grey87"))

suppressPackageStartupMessages( require(Defaults) )
suppressPackageStartupMessages( require(utils) )
suppressPackageStartupMessages( require(graphics) )

setDefaults("plot.default",frame.plot=FALSE, type='l', col=2)

我在这里做的是: 当grDevices 包被加载时(通过加载graphics 包),我用我喜欢的参数调用X11.options:一个更宽的框,浅灰色背景,xlib 调用(因为我正在做远程调用,以及 cairo在我目前的环境中太慢了(另一个需要解决的问题)) 然后我默默地加载了 3 个包,Defaultsutilsgraphics。第二个是为了避免出现find 函数错误消息。

最后,魔术函数setDefaults为散点图函数plot.default设置了3个参数。第三个参数col不是plot.default的参数,而是par()函数的一个参数。

但是,用par 调用setDefaults 也不起作用。

欢迎任何解决方案...

【问题讨论】:

  • ?palette .... 并在plot.xy 上设置默认值 ...
  • (这比我想象的要复杂一些——plot.xy 有一些皱纹,使它无法与 setDefaults 一起工作——但我仍然认为这是正确的轨道)
  • 你不能把par(col="red")放在你的.Rprofile中吗?

标签: r colors plot default


【解决方案1】:

您可以在每次打开新图形框架时使用"plot.new" 挂钩设置默认par 值。 (钩子的工作方式记录在?plot.new?setHook

在您的情况下,只需将此行添加到您的 .Rprofile:

setHook("plot.new", function() par(col = "red"))

【讨论】:

  • 是的!!!!确实如此简单。非常感谢您的回答,这正是我所需要的。
  • 您好 Googl..,如果您正在解析此页面,请在 R 中执行以下钩子以获得漂亮的图形,这要感谢 stackoverflow 用户的帮助:setHook(packageEvent("grDevices", "onLoad"), function(...) grDevices::X11.options(width = 14, height = 8, type = "Xlib", xpos = 600, ypos = 30, canvas = "grey87")) 然后您可以添加这也是:suppressPackageStartupMessages( require(Defaults) ) suppressPackageStartupMessages( require(utils)) suppressPackageStartupMessages( require(graphics)) setHook("plot.new", function() par(col="red")) setDefaults("plot.default",frame.plot=FALSE, type='l')
  • 从尘埃中得到这个。我正在尝试这个,但由于某种原因,红色仅适用于我的传奇标签。有什么想法吗?
  • @BramVanroy -- 嗯。我不知道,如果没有可重复的示例,我将无法提供帮助,因为我的答案中的代码仍然适用于我,例如 plot(rnorm(99))
【解决方案2】:

颜色等参数是基于每个设备设置的,因此当您关闭一台设备并创建新设备时,所有参数都会设置回其默认值。为此,我将创建您自己的设备函数,该函数打开设备然后设置参数,例如:

mydev.new <- function(...) {
  dev.new(...)
  par(col='red')
}

您显然可以用x11 或其他东西替换dev.new,但这可能是最便携的。现在您可以使用mydev.new 打开一个新设备,默认颜色将设置为红色。

如果你运行命令进一步

options(device=mydev.new)

然后,当您没有打开图形设备并运行绘图命令时,您的函数将是打开新绘图设备的函数,因此在这种情况下默认值也会为红色。您可以扩展 mydev.new 函数(或任何您想调用的函数)以针对您可能想要使用的不同情况设置其他选项、​​获取参数等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2013-10-26
    • 2023-04-04
    相关资源
    最近更新 更多