R语言绘制直方图如何按X<980条件设置柱形填充色
R语言直方图按条件设置柱形填充色实现方法
当然可以实现。你当前代码没出预期效果的原因很简单:直接给plot()传一维数值向量,默认画的是「元素索引为x轴、数值为y轴」的点序列图,根本不是直方图,所以ifelse是给每个单独的点上色,自然做不到柱形按区间统一填色。
基础R实现代码
先调用hist()计算直方图的柱形区间结构(不直接绘图),判断每个柱是否满足X<980的条件再分配颜色,最后绘图即可:
# 生成测试数据 Sample <- rnorm(2500,1000,20) # 2500 norm values # 先计算直方图的区间、频数信息,暂不输出图形 h <- hist(Sample, plot = FALSE) # 给柱形匹配颜色:柱形右边界小于980填红色,其余填绿色 # 要按柱中点判断就把条件换成 h$mids < 980,按左边界判断就用 h$breaks[-length(h$breaks)] <980 col_set <- ifelse(h$breaks[-1] < 980, 'red', 'green') # 绘制最终带条件填色的直方图 plot(h, col = col_set, xlab = "Sample值", main = "条件填色直方图")
你之前写的代码跑出来的是点序列图,效果如下:
补充说明
如果刚好有柱形跨在980这个临界值上,你可以按需调整判断规则:比如柱形50%以上的区间在980以下就标红,或者给跨临界值的柱单独设置第三种填充色,逻辑和上面的写法一致,调整判断条件就行。
内容的提问来源于stack exchange,提问作者José Miguel Álvarez
相关产品推荐
相关产品推荐

