为超过特定值的直方图着色

  • 本文关键字:直方图 r
  • 更新时间 :
  • 英文 :


首先,我知道这个问题以前出现过,即:更改大于特定值的直方图条形颜色但尽管如此,我还是遇到了一个令人困惑的问题。

所以,我有一些数据,在这些数据中,我知道变量 houses$PPSQM 有 4 个大于 3000 的值。所以我试图做的是绘制数据的直方图,其中所有低于 3000 的条形都是红色的,高于 3000 的柱线是灰色的。我通过查看直方图知道有 2 根柱线高于 3000(为了清楚起见,4000 时有 2 个值,5000 处有 2 个值(这是我使用的代码:

clr <- ifelse(houses$PPSQM>3000, "grey", "red")
hist(houses$PPSQM,ylim = c(0, 50) ,xlab="Cost per Sq. Meter",ylab='Frequency',col = clr)

但我遇到的问题是:如果我在 if-else 语句中说 houses$PPSQM>3000,那么它会将所有条形涂成红色......如果我说房子$PPSQM<3000,那么它把所有的条都涂成灰色!?

关于我如何解决这个问题的任何建议?

我认为您需要通过直方图中的中断而不是数据中的值来着色。试试这个:

h   <- hist(houses$PPSQM)
clr <- ifelse(h$breaks > 3000, "red", "grey")
hist(houses$PPSQM, ylim = c(0, 50), xlab = "Cost per Sq.Meter", 
     ylab = 'Frequency', col = clr)

您可能需要使用 breaks 参数(请参阅?hist(才能让它看起来像您想要的那样。您可能还想使用 >= 3000

最新更新