微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在ggplot命令中激活两个不同的scale_fill_manual

这个问题从我的 earlier one关于ggplot2中的背景颜色开始.

从那里的答案,我现在能够使用geom_rect为我的情节提供五种不同颜色的背景.最重要的是,我想绘制一个使用两种不同颜色的条形图.我可以单独完成这些任务,但是当我尝试将它们组合起来时,scale_fill_manual命令就会发生冲突.

这是我正在尝试的:

scores = data.frame(category = 1:4,percentage = c(34,62,41,44),type = c("a","a","b"))
rects <- data.frame(ystart = c(0,25,45,65,85),yend = c(25,85,100),col = letters[1:5])
labels = c("ER","OP","PAE","Overall")
medals = c("navy","goldenrod4","darkgrey","gold","cadetblue1")

ggplot() + 
geom_rect(data = rects,aes(xmin = -Inf,xmax = Inf,ymin = ystart,ymax = yend,fill=col),alpha = 0.3) + 
scale_fill_manual(values=medals) +
opts(legend.position="none") + 
geom_bar(data=scores,aes(x=category,y=percentage,fill=type),stat="identity") +
#scale_fill_manual(values = c("indianred1","indianred4")) +
scale_x_continuous(breaks = 1:4,labels = labels)

如上所述,这使得两个条形图颜色与前两种背景颜色相同.删除第二个scale_fill_manual命令(倒数第二行)上的“#”会覆盖​​背景颜色命令,使条形成为我想要的颜色,但使背景在条形图中只有我想要的两种颜色.

如何将一个scale_fill_manual命令应用于geom_rect背景,另一个应用于geom_bar条形图(或者如何通过其他方式实现相同的效果)?

解决方法

问题是你在rects和score中使用“a”和“b”,因此它们被映射到相同的颜色.由于矩形似乎是占位符值,因此将它们更改为与分数中的任何内容相比排序更晚的不同内容.
rects$col <- c("Z1","Z2","Z3","Z4","Z5")

现在,您可以使用所有(7)颜色制作一个scale_fill_manual.

ggplot() + 
geom_rect(data = rects,alpha = 0.3) + 
opts(legend.position="none") + 
geom_bar(data=scores,stat="identity") +
scale_fill_manual(values=c("indianred1","indianred4",medals)) +
scale_x_continuous(breaks = 1:4,labels = labels)

原文地址:https://www.jb51.cc/css/215734.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。