R 导出自定义调色板

R 导出自定义调色板,r,R,我正在寻找一种方法来创建我自己的调色板,这些调色板可以在ggplot中调用,并且可以导出并与我的团队共享,而不需要在每个.R代码中定义调色板。 例如,类似于保存为*.thmx的自定义Excel主题颜色 理想情况下,它将如下所示: ggplot(mtcars, aes(wt, mpg)) + geom_point(size=4, aes(colour = factor(cyl))) + scale_colour_brewer(palette="Mypalette") Mypale

我正在寻找一种方法来创建我自己的调色板,这些调色板可以在ggplot中调用,并且可以导出并与我的团队共享,而不需要在每个.R代码中定义调色板。 例如,类似于保存为*.thmx的自定义Excel主题颜色

理想情况下,它将如下所示:

ggplot(mtcars, aes(wt, mpg)) +
    geom_point(size=4, aes(colour = factor(cyl))) +
    scale_colour_brewer(palette="Mypalette")
Mypalette以某种方式保存在桌面上,可以直接调用,无需事先在代码中定义

或者像Viridis包-可能不是最简单的解决方案

ggplot(mtcars, aes(wt, mpg)) +
    geom_point(size=4, aes(colour = factor(cyl))) +
    scale_color_viridis(discrete=TRUE)
我的目标是最终使用公共共享调色板,允许多个贡献者制作的图形具有视觉连贯性

如果你有任何提示或建议,我将不胜感激


非常感谢

要与您的团队共享选项板,您可以使用这些选项板制作一个包。以众多调色板包中的一个为例,比如说管理团队听起来是这个过程中最困难的部分。你在共享目录上工作吗?您是否使用GitHub或类似的平台

如果您在一个共享目录中,您可以标准化一些R代码,这些代码读取文件并为名为MyPallete的变量分配颜色

您只需要使用十六进制代码为MyPallete分配一个字符向量,并指导您的团队使用该过程

例如:

Mypallette <- c("#CA0020","#F4A582", "#D3D3D3", "#92C5DE", "#0571B0")

大概你希望能做一些简单的事情,比如在你的绘图中添加+比例\颜色\公司。实际上,不需要一个完整的软件包就可以很容易地做到这一点,当然,如果你的公司有多个R用户,那么可能还有其他很好的理由这样做

假设您希望能够做到这一点:

data.frame(x = runif(30), y = runif(30), z = factor(rep(letters[1:3], 10))) %>%
  ggplot(aes(x = x, y = y, colour = z)) +
  geom_point(size = 5) + 
  scale_colour_company()
您只需定义一个调色板函数,该函数接受单个整数并返回表示颜色的字符向量。例如:

company_palette <- function(n)
{
  company_colours <- c("forestgreen", "steelblue1", "#FD759A", "#A39847")
  if(n > length(company_colours)) stop("Need more company colours!")
  return(company_colours[seq(n)])
}
现在,您可以非常简单地创建与ggplot兼容的函数:

scale_fill_company <- function() discrete_scale("fill", "A", palette = company_palette)
scale_colour_company <- function() discrete_scale("colour", "A", palette = company_palette)

将这6行保存在.R脚本中,就可以开始了

相关:相关:设置一个包!!我在公司就是这么做的。@MrFlick的第二个链接是一个非常好的起点,可以说明函数的外观。这与我在为公司编写的软件包中采用的方法基本相同。我还为我们的企业设计添加了一个主题。该软件包可以放在github上,也可以设置自己的本地迷你起重机。所以每个人都可以像其他软件包一样使用它。是的,这是我首先喜欢的方法。我相信这是最好的,直截了当的。感谢链接我认为存储用于为数据着色的中断也是一个好主意,这使得使用相同数据比较绘图成为可能:即比例\颜色\手动中断=c2,1,0.5,值=cred,蓝色,绿色是的。到目前为止,我们一直在这样做。这仅仅是跳过那些没有真正吸引任何人的视觉方面的问题。谢谢你的回答。谢谢你的链接。首先,我将重点介绍这种方法!谢谢