You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据分位数区间为ggplot2直方图着色?

直方图按分位数区间着色问题及后续更新

我希望为直方图着色以展示分位数区间分布,但无法确定在代码中何处/如何添加颜色设置。以下是使用iris数据集的示例代码:

# 获取数据的汇总信息和分位数区间信息
summary(iris)
vals <- c(q1=quantile(iris$Sepal.Length, .25),
          q2=quantile(iris$Sepal.Length, .50),
          q3=quantile(iris$Sepal.Length, .75))

# 创建直方图并按分位数区间为柱子着色;添加均值/中位数线
h <- ggplot(iris, aes(Sepal.Length), fill=vals) +
  geom_histogram(color="black", bins=10) +
  scale_x_continuous(breaks=seq(0, 10, 2)) +
  scale_y_continuous(expand=c(0,0), limits=c(0,60)) + theme_bw() +
  labs(x="长度", y="频数") +
  theme(axis.title.x = element_text(size=12),
        axis.text.x = element_text(size=12),
        axis.title.y = element_text(size=12),
        axis.text.y = element_text(size=12))

h + geom_vline(xintercept = median(iris$Sepal.Length), col="red", size=1.1, lty="solid") +
  geom_vline(xintercept = mean(iris$Sepal.Length), col="blue", size=1.1, lty="solid")

我尝试在ggplot(aes)和geom_histogram()的不同位置修改fill参数,但生成的图形始终为深灰色或无法正常显示。我只想为分位数区间对应的直方图柱子着色,总共需要4种颜色。


更新:从下方的两个回答可知,为直方图按分位数着色并非最佳方案。我可能会改用分位数线展示,感谢两位用户的回答,代码对我很有用,我可能会将其用于常规ggplot绘图而非直方图。

内容的提问来源于stack exchange,提问作者Katherine Chau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:05:21