在R中,如何在ggplot2的scale_fill_brewer中更改一个值的颜色值?

前端之家收集整理的这篇文章主要介绍了在R中,如何在ggplot2的scale_fill_brewer中更改一个值的颜色值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个R数据帧(df),我在ggplot2中作为条形图绘制,并且基于数据帧(df $ type)中的列着色。现在,我使用默认着色模式(scale_fill_brewer)分配颜色。

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

到目前为止,我已经能够通过找出scale_fill_brewer用于N个不同项目的颜色集,然后预测颜色黑色并将其传递到scale_fill_manual来手动执行。

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的十六进制值,无需手动分配颜色。

就像是:

ggplot(y=values,fill=factor(type))) +
  geom_bar()+ scale_fill_brewer(value(-1,"black")

谢谢!

编辑:该解决方案必须适用于30多种颜色,并适用于ColorBrewer的“Set2”

解决方法

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

例如,一个5色的顺序蓝色调色板:

library(RColorBrewer)
my.cols <- brewer.pal(5,"Blues")
my.cols

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

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

您现在可以使用或修改结果,并使用scale_manual_fill将其传递给ggplot,如您所建议的:

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)

猜你在找的CSS相关文章