如何修改geom_bar中以pvalue为填充变量的条形图填充颜色?
修改ggplot2条形图填充颜色的方法
嗨,我来帮你搞定这个ggplot2条形图的填充色修改问题~根据你的需求,分两种常见场景给你解决方案:
1. 设置单一固定的绿色/红色填充
如果想让所有条形都用同一种绿色或红色,只需要把fill=pvalue从aes()里移出来,直接在geom_bar()里指定固定颜色值就行:
示例:全绿色填充
Top_pos <- ggplot(Top_10, aes(x=reorder(Term,Cs), y=Cs)) + geom_bar(stat = "identity", colour="black", fill="green") + coord_flip()
示例:全红色填充
Top_pos <- ggplot(Top_10, aes(x=reorder(Term,Cs), y=Cs)) + geom_bar(stat = "identity", colour="black", fill="red") + coord_flip()
你也可以用更精准的十六进制颜色代码,比如薄荷绿#2ecc71、砖红#e74c3c,替换上面的颜色名称即可。
2. 按pvalue映射绿色/红色渐变
如果还是想保留pvalue的颜色映射逻辑,只是把默认的蓝色系换成绿色或红色系的渐变,就需要用scale_fill_*系列函数来替换默认的颜色标尺:
示例:绿色系渐变(浅绿到深绿)
Top_pos <- ggplot(Top_10, aes(x=reorder(Term,Cs), y=Cs, fill=pvalue)) + geom_bar(stat = "identity", colour="black") + scale_fill_gradient(low = "#d4edda", high = "#155724") + # 浅绿→深绿 coord_flip()
示例:红色系渐变(浅红到深红)
Top_pos <- ggplot(Top_10, aes(x=reorder(Term,Cs), y=Cs, fill=pvalue)) + geom_bar(stat = "identity", colour="black") + scale_fill_gradient(low = "#f8d7da", high = "#721c24") + # 浅红→深红 coord_flip()
示例:绿-红双向渐变(区分pvalue高低)
如果想让低pvalue显示绿色,高pvalue显示红色,可以用scale_fill_gradient2设置中点:
Top_pos <- ggplot(Top_10, aes(x=reorder(Term,Cs), y=Cs, fill=pvalue)) + geom_bar(stat = "identity", colour="black") + scale_fill_gradient2(low = "green", mid = "white", high = "red", midpoint = median(Top_10$pvalue)) + coord_flip()
内容的提问来源于stack exchange,提问作者Emma Kate Loveday
相关产品推荐
相关产品推荐

