我有一个R数据帧(df),我将其绘制为ggplot2中的条形图,并基于dataframe(df$type)中的列进行着色.现在,我使用默认的着色模式(scale_fill_brewer)来分配颜色.
如何将黑色分配给一个值(scale_fill_brewer)并使用scale_fill_brewer分配其余颜色?(所有其他df $类型都是从1到X的整数集合,其中X是唯一值的数量)
到目前为止,我已经能够通过计算出scale_fill_brewer用于N个不同项目的颜色集然后预先设置颜色黑色并将其传递给我来手动执行此操作df$type == -1.
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)
Run Code Online (Sandbox Code Playgroud)
问题是我需要一个无需手动分配颜色的解决方案,使用十六进制颜色计算器来计算scale_fill_brewer的十六进制值.
就像是:
ggplot(y=values,data=df, aes(x=name, fill=factor(type))) +
geom_bar()+ scale_fill_brewer(value(-1, "black")
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:该解决方案必须适用于30多种颜色,适用于ColorBrewer的"Set2"
想象一下,你有一个像这样的简单数据集:
ive
region Edad
1 Española 23
2 Española 37
3 Española 40
4 Española 21
5 Africana 29
6 Española 42
7 Europea 29
8 Española 25
9 Española 32
10 Española 20
Run Code Online (Sandbox Code Playgroud)
我有兴趣为region按颜色分类的变量执行条形图。所以我创建了以下代码:
g1 <- ggplot(ive, aes(x=reorder(ive$region, -table(ive$region)[ive$region])))
g1 + geom_bar(aes(fill=ive$region)) + geom_text(stat='count',aes(label=..count..),vjust=-0.7) + xlab("")
Run Code Online (Sandbox Code Playgroud)
但是图例显示ive$region,我希望它显示自定义标题。
我几乎可以肯定这是一个愚蠢的问题,但我一直在尝试解决它 2 天,但我没有找到解决方法。
谢谢你,阿尔瓦罗