如何在ggplot中全局修改所有代码的直方图柱子默认填充颜色?
全局修改ggplot柱状图/直方图默认填充色的方法
你之前的代码没生效,核心问题是你用的
geom_histogram(stat="identity")其实是在画柱状图,不是真正的直方图。ggplot里的直方图默认是对连续数据分箱(stat="bin"),而你这种直接映射x和y数值的场景,官方更推荐用geom_col()(等同于geom_bar(stat="identity")),这两类几何对象的默认参数设置逻辑不一样。给你两种靠谱的全局修改方案:
方案一:直接修改几何对象的默认填充色
适合不需要按变量映射颜色,只想统一设置所有柱状图/直方图填充色的场景:
# 全局设置geom_col(柱状图)的默认填充色 update_geom_defaults("col", list(fill = "red")) # 测试代码 df = data.frame("Group" = c("A", "B"), "Value" = c(7, 11)) ggplot(df, aes(x = Group, y = Value)) + geom_col()
如果是修改真正直方图(连续数据分箱)的默认填充色,换个几何对象名称就行:
update_geom_defaults("histogram", list(fill = "orange")) # 测试连续数据直方图 df_hist = data.frame(Value = rnorm(100)) ggplot(df_hist, aes(x = Value)) + geom_histogram()
方案二:修改离散填充调色板
适合需要按离散变量映射填充色的场景,比如每个组用不同颜色,这时你之前的options方法是有效的,但要记得把填充色绑定到变量上:
options(ggplot2.discrete.fill = c("red", "blue")) # 测试:把fill映射到Group变量 df = data.frame("Group" = c("A", "B"), "Value" = c(7, 11)) ggplot(df, aes(x = Group, y = Value, fill = Group)) + geom_col()
内容的提问来源于stack exchange,提问作者armandfavrot
相关产品推荐
相关产品推荐

