【问题标题】:Add custom colors to R: Where is the color config file?向 R 添加自定义颜色:颜色配置文件在哪里?
【发布时间】:2012-11-09 16:35:40
【问题描述】:

我有几种颜色(rgb/hex 代码),我希望它们可以作为默认值使用。我希望颜色在启动时可用,而无需运行任何脚本。换句话说,我想运行命令 colors() 并让我的自定义颜色显示在列表中。

我怀疑这个列表是从 R 树中的某个文件或其他地方的某个其他配置文件中填充的。具体来说:

  • R 从哪个文件中提取颜色定义?

相关数据:

> version
               _                            
platform       x86_64-apple-darwin9.8.0     
arch           x86_64                       
os             darwin9.8.0                  
system         x86_64, darwin9.8.0          
status                                      
major          2                            
minor          15.1                         
year           2012                         
month          06                           
day            22                           
svn rev        59600                        
language       R                            
version.string R version 2.15.1 (2012-06-22)
nickname       Roasted Marshmallows

【问题讨论】:

  • 您是在谈论用于 R IDE 的颜色(例如在交互式窗口、编辑器窗口等中)还是各种绘图功能默认使用的颜色?
  • 没有什么是不可能的,但我不会尝试更改colors() 的输出。通常对于这样的事情,您可能只是将十六进制代码放入您的 .RProfile 文件中。 (并且没有“颜色配置文件”,仅供参考。)
  • mjv:我只想添加到颜色列表中,所以我不必每次都定义它们。
  • joran:谢谢——我盲目地认为它是从配置文件中提取颜色定义。但正如 Josh 在下面指出的那样,我认为我必须进行一些编译,这有点超出了我愿意付出的努力。

标签: r colors


【解决方案1】:

您可以(如果您真的需要)将默认调色板更改为您自己的颜色。例如,

(palette(c("yellow", "orange")))
plot(1:10, col=1:10)

除了提供命名颜色之外,您还可以使用rgb 函数指定 rgb 颜色。您可以将此命令添加到您的.Rprofile,以便在启动时使用。

不过,更好的办法是定义自己的调色板:

#Put this in your .Rprofile
mycols = adjustcolor(palette(), alpha.f = 0.3)
palette(mycols)

这样您就不会覆盖默认值。有关其他示例,请参阅 ?palette

【讨论】:

  • 我并不是真的在寻找一个完整的调色板,我只想说 col=MyOwnPersonalBlue。
  • @BenDundee -- 听起来你只想做这样的事情:MyOwnPersonalBlue <- "#00008B"; plot(rnorm(10), col=MyOwnPersonalBlue, pch=16)。 (然后,如果您愿意,可以将MyOwnPersonalBlue 存储在您的.Rprofile 中,有关详细信息,请参阅?Startup。)
  • @JoshO'Brien:谢谢,我想这正是我需要的。
【解决方案2】:

直接回答您的项目符号问题:R 的颜色数据库存储在 "colors.c" source file 中。

因为colors() 等访问该数据库的已编译版本,如果不编辑源代码然后重新编译 R,则无法添加到命名颜色。

这是在$R_SOURCE_HOME/src/main/colors.c 中定义 ColorDataBase 的前几行:

static ColorDataBaseEntry ColorDataBase[] = {
    /* name rgb code -- filled in by InitColors() */
    {"white",   "#FFFFFF",  0},
    {"aliceblue",   "#F0F8FF",  0},
    {"antiquewhite",    "#FAEBD7",  0},
    {"antiquewhite1",   "#FFEFDB",  0},
    {"antiquewhite2",   "#EEDFCC",  0},

【讨论】:

  • 而且,借用一些旧车广告,如果您正在考虑修改此文件:“不是您愿意,但您可以。”
  • 这听起来很诱人......但我不认为重新编译 R 是我想要做的。我会对此回应投赞成票,但我还没有街头信誉:)
  • @BenDundee -- 是的……对这种诱惑说不!做一些像我在评论中提到的对 cgillespie 的回答的事情要好得多。干杯。
猜你喜欢
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2019-02-17
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多