R 将直方图着色超过某个值

R 将直方图着色超过某个值,r,R,首先,我知道这个问题以前也提过,即: 但尽管如此,我还是遇到了一个令人困惑的问题 因此,我有一些数据,在这些数据中,我知道变量houses$PPSQM有4个大于3000的值。所以我想做的是绘制一个数据的柱状图,所有低于3000的条都是红色的,高于3000的条都是灰色的。通过查看柱状图,我知道有两个条形图高于3000(为了清晰起见,4000和5000分别有两个值)。以下是我使用的代码: clr <- ifelse(houses$PPSQM>3000, "grey", "red") h

首先,我知道这个问题以前也提过,即: 但尽管如此,我还是遇到了一个令人困惑的问题

因此,我有一些数据,在这些数据中,我知道变量houses$PPSQM有4个大于3000的值。所以我想做的是绘制一个数据的柱状图,所有低于3000的条都是红色的,高于3000的条都是灰色的。通过查看柱状图,我知道有两个条形图高于3000(为了清晰起见,4000和5000分别有两个值)。以下是我使用的代码:

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

hist(houses$PPSQM,ylim = c(0, 50) ,xlab="Cost per Sq. Meter",ylab='Frequency',col = clr)
clr 3000,“灰色”、“红色”)
hist(房屋$PPSQM,ylim=c(0,50),xlab=“每平方米成本”,ylab='Frequency',col=clr)

但我遇到的问题是:如果我在If-else语句中说houses$PPSQM>3000,那么它会把所有的条都染成红色。。。如果我说houses$PPSQM,我想你需要根据直方图中的断点来着色,而不是数据中的值。试试这个:

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)

h=3000

你好,Alanis,如果你能使示例重现,那么会更容易帮助你。在没有看到数据的情况下很难回答,但我怀疑问题在于
clr
中的颜色比直方图中的条带更多。请记住,直方图不是条形图:值放在箱子中,而不是单独计算。尝试
h您是对的,
lenght(clr)
等于12535。。。长度(h$counts)
等于11。这是其中的一天。。。现在把它修好。。。谢谢你的帮助谢谢,你上面的评论让我找到了正确的方法来修复它。。。这是通过使用
breaks
参数实现的。谢谢你的帮助