我有一个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`,手动完成此操作。
如何将颜色黑色分配给一个值(`df$type == -1`),并使用`scale_fill_brewer`将其余颜色分配给其余部分?(所有其他`df$types`都在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,data=df, aes(x=name, fill=factor(type))) +
geom_bar()+ scale_fill_brewer(value(-1, "black")
谢谢!
编辑:该解决方案必须适用于超过30种颜色,并适用于ColorBrewer的“Set2”。