我想使用ggplot2为每组barplot分配特定的颜色。
kombi2 <- data.frame(Klimatop1,Nutzung=rep(Innenstadtdf[,1],6),GV_Anteil1,Farben=rep(Nutzfarben,6))
p <- ggplot(data=kombi2,aes(x=Klimatop1,y=GV_Anteil1,fill=Nutzung))+
geom_bar(stat="identity")
p+scale_fill_manual(values=kombi2$Farben)
进行默认分配时,
I get a wide color range。
但是,我需要手动分配基于组的颜色。当我使用scale_fill_manual()
和相应的向量I get only 8 different colors in the plot进行此操作时,这对于我的22个不同组来说还不够。
这是一些示例代码,与上述代码存在相同的颜色问题:
Nutzfarben1 <- c("#333333","#FFCC00","#FF6666","#33FFFF","#FFFFFF","#00FF33","#99CC00","#FF9933","#66CC00","#CC0033","#FFFF00","#666600","#999999","#99FF00","#0033CC","#CCCCCC","#333300","#CC9900","#99CC99","#006633","#FFCCCC","#993366")
Nutzfarben <- c("dimgray","darkorange","deeppink","aquamarine","floralwhite","springgreen4","green3","lemonchiffon2","moccasin","firebrick3","goldenrod1","palegreen4","lightslategray","lawngreen","cyan4","azure3","darkolivegreen","lightsalmon4","mediumseagreen","forestgreen","bisque","darkorchid")
df <- data.frame(one=rep(c(1:22),6),two=rep(c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v"),6),three=1:132, Farben=rep(Nutzfarben1,6))
g <- ggplot(data=df,aes(x=one,y=three,fill=two))+
geom_bar(stat="identity")
g+scale_fill_manual(values=df$Farben)
我已经用一些组合数据进行了尝试,我还尝试将数据分配为十六进制rgb向量,r颜色名称以及除ggplot2以外的所有软件包。 你还有其他主意吗?我想念一个值吗?我需要另一个包裹吗?我的问题可能不在R范围内吗?我将R版本3.5.1与RStudio 1.1.453一起使用
答案 0 :(得分:0)
我想我知道问题出在哪里,但是对我来说,为什么会出现此错误并没有多大意义。始终确保在数据框上运行str()
以了解数据。
即使您在数据框中重复了一个字符向量,它也被强制转换为22级的因子。
如果在调用ggplot之前或在as.character()
中直接在df$Farben
上运行scale_fill_manual
,应该可以解决此问题。
但是再次,我不明白为什么当您传递一个因子向量而不是字符向量时,ggplot会这样做,这可能与参数values
期望传递给它有关。
答案 1 :(得分:0)
将调色板更改为palette(Nutzfarben)
就可以了!
为了完整性:在p+scale_fill_manual(values=Nutzfarben)
中使用简单向量,而不是引用包含每行p+scale_fill_manual(values=Farben)
的颜色分配的列,也很重要。
因此必须将代码更改为:
Nutzfarben <- c("dimgray","darkorange","deeppink","aquamarine","floralwhite","springgreen4","green3","lemonchiffon2","moccasin","firebrick3","goldenrod1","palegreen4","lightslategray","lawngreen","cyan4","azure3","darkolivegreen","lightsalmon4","mediumseagreen","forestgreen","bisque","darkorchid")
palette(Nutzfarben)
kombi2 <- data.frame(Klimatop=Klimatop1,Nutzung=rep(Innenstadtdf[,1],6),GV_Anteil=GV_Anteil1,Farben=rep(Nutzfarben,6))
p <- ggplot(data=kombi2,aes(x=Klimatop,y=GV_Anteil,fill=Nutzung))+
geom_bar(stat="identity",colour="white")
p+scale_fill_manual(values=Nutzfarben)
没有必要使用命名载体。
感谢@aosmith提供了palette()
提示。