如何根据分位数区间为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
相关产品推荐
相关产品推荐

