首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ggplot2的scale_fill_brewer中仅更改一个值的颜色值?

如何在ggplot2的scale_fill_brewer中仅更改一个值的颜色值?
EN

Stack Overflow用户
提问于 2011-05-21 00:48:29
回答 1查看 20.7K关注 0票数 25

我有一个R数据帧(df),我在ggplot2中将其绘制为条形图,并根据数据帧(df$type)中的一列进行着色。现在,我使用默认的着色模式(scale_fill_brewer)来分配颜色。

如何将黑色分配给一个值( df$type == -1 ),并使用scale_fill_brewer分配其余的颜色?(所有其他df$types都是从1到X的一组整数中的一个,其中X是唯一值的数量)

到目前为止,我已经能够通过计算出scale_fill_brewer用于N个不同项目的颜色集,然后预先绘制黑色并将其传递给scale_fill_manual,从而手动完成此操作。

代码语言:javascript
复制
rhg_cols1<- c("#000000","#F8766D","#7CAE00","#00BFC4","#C77CFF" )
ggplot(y=values,data=df, aes(x=name, fill=factor(type))) + 
  geom_bar()+ scale_fill_manual(values = rhg_cols1)

问题是,我需要一个不需要手动分配颜色的解决方案,通过使用十六进制颜色计算器来计算scale_fill_brewer的十六进制值。

类似于:

代码语言:javascript
复制
ggplot(y=values,data=df, aes(x=name, fill=factor(type))) +
  geom_bar()+ scale_fill_brewer(value(-1, "black")

谢谢!

编辑:解决方案必须适用于30种以上的颜色,并适用于ColorBrewer的"Set2“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-21 01:50:00

RColorBrewer包包含调色板,您可以使用函数brewer.pal返回您选择的调色板。

例如,5种颜色的顺序蓝色调色板:

代码语言:javascript
复制
library(RColorBrewer)
my.cols <- brewer.pal(5, "Blues")
my.cols

[1] "#EFF3FF" "#BDD7E7" "#6BAED6" "#3182BD" "#08519C"

您可以在?brewer.pal帮助文件中获得有效调色板名称的列表。这些名称与ColorBrewer网站上的名称相对应。

您现在可以使用或修改结果,并按照您的建议使用scale_manual_fill将这些结果传递给ggplot

代码语言:javascript
复制
my.cols[1] <- "#000000"

library(ggplot2)
df <- data.frame(x=1:5, type=1:5)
ggplot(df, aes(x=x, fill=factor(type))) +
    geom_bar(binwidth=1)+ 
    scale_fill_manual(values = my.cols)

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6075140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档