将直方图着色超过特定值

时间:2017-05-22 21:41:10

标签: r

首先我知道这个问题出现过,即:Change histogram bar colours greater than a certain value 但尽管如此,我还是遇到了一个令人困惑的问题。

所以,我有一些数据,在这些数据中我知道变量容器$ PPSQM有4个值大于3000.所以我想要做的是绘制数据的直方图,所有条形都低于3000是红色和3000以上的灰色。我知道从直方图中看到有2个高于3000的条(为了清晰起见,有4个值在4000和2在5000)这里是我使用的代码:

clr <- ifelse(houses$PPSQM>3000, "grey", "red")

hist(houses$PPSQM,ylim = c(0, 50) ,xlab="Cost per Sq. Meter",ylab='Frequency',col = clr)

但我遇到的问题是:如果我说房子$ PPSQM&gt; 3000,在if-else语句中,那么它会将所有条纹着色为红色...如果我说房子$ PPSQM <3000,那么它是把所有的酒吧着色为灰色!?

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

1 个答案:

答案 0 :(得分:1)

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

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