我注意到这里有Box and whiskers plot个电话:

p + geom_boxplot(aes(fill = factor(cyl)))

为箱线图填充生成亮红色/绿色/蓝色,同时:

p + geom_boxplot(aes(fill = factor(vs)))

生成明显的淡绿色/红色.在我的数据中,我得到了第二组 colored颜色 ,但我想要第一组(比如

p + geom_boxplot(aes(fill = factor(cyl)))

是什么控制ggplot使用的 colored颜色 集,以及如何更改它?

推荐答案

默认 colored颜色 是 colored颜色 轮周围均匀分布的色调.您可以判断这是如何从here生成的.

您可以将scale_fill_manual与这些 colored颜色 搭配使用:

p + scale_fill_manual(values=c("#F8766D", "#00BA38"))

在这里,我使用cyl中的ggplot_build(p)$data来获得 colored颜色 .

或者,您也可以使用其他调色板,如:

p + scale_fill_brewer(palette="Set1")

要找到调色板中的 colored颜色 ,可以执行以下操作:

require(RColorBrewer)
brewer.pal(9, "Set1")

如果你感兴趣的话,可以查看软件包,了解调色板和其他选项.

Edit:@user248237dfsf,正如我already在顶部的链接中指出的那样,@Andrie的这个函数显示生成的 colored颜色 :

ggplotColours <- function(n=6, h=c(0, 360) +15){
  if ((diff(h)%%360) < 1) h[2] <- h[2] - 360/n
    hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}

> ggplotColours(2)
# [1] "#F8766D" "#00BFC4"

> ggplotColours(3)
# [1] "#F8766D" "#00BA38" "#619CFF"

如果你观察生成的两种 colored颜色 ,当n=2和n=3时,第一种 colored颜色 是相同的,但第二种 colored颜色 不相同.这是因为它能产生evenly spaced种 colored颜色 .如果你想用cyl的 colored颜色 表示vs,那么你必须设置scale_fill_manual,并使用这个函数中n=3生成的 colored颜色 .

要验证这确实是正在发生的事情,您可以做:

p1 <- ggplot(mtcars, aes(factor(cyl), mpg)) + 
           geom_boxplot(aes(fill = factor(cyl)))

p2 <- ggplot(mtcars, aes(factor(cyl), mpg)) + 
           geom_boxplot(aes(fill = factor(vs)))

现在,如果你这样做:

ggplot_build(p1)$data[[1]]$fill
# [1] "#F8766D" "#00BA38" "#619CFF"

ggplot_build(p2)$data[[1]]$fill
# [1] "#F8766D" "#00BFC4" "#F8766D" "#00BFC4" "#F8766D"

你可以看到,这些是使用ggplotColours生成的 colored颜色 ,差异的原因也很明显.我希望这有帮助.

R相关问答推荐

使用gggplot 2在R中正确表示翻转堆叠条形图中的数据

更改网格的crs以匹配简单要素点对象的crs

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

在使用ggroove后,将图例合并在gplot中

在R中为马赛克图中的每个字段着色

使用列/行匹配将两个不同维度的矩阵相加

如何提取所有完美匹配的10个核苷酸在一个成对的匹配与生物字符串在R?>

在R中按行按列范围查找最大值的名称

将Posict转换为数字时的负时间(以秒为单位)

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

如何根据R中其他变量的类别汇总值?

在R中创建连续的期间

列名具有特殊字符时的循环回归

如何计算R glm probit中的线性预测因子?

观察器中的inaliateLater的位置

按两个因素将观测值分组后计算单独的百分比

R没有按顺序显示我的有序系数?

使用其他DF中的文件名将列表中的每个元素保存到文件中

使用列名和r中的前缀 Select 列的CREATE函数