2017-09-04 47 views
1

我目前正在研究R中包含的“钻石”数据集。具体来说,我试图突出显示最常出现的605次钻石价格(132次)在ggplot中突出显示具体值的特定栏

我的代码如下:

library(ggplot2) 

ggplot(diamonds) + 
geom_histogram(aes(x=price), 
      binwidth = 10, 
      breaks = seq(250, 1000, 10), 
      color = "black") + 
scale_fill_manual(values = c("[250,590]" = "#FF0000", "[600,610]" = "#FF9999", "[620,1000]" = "#FF0000")) 

我似乎得到的一切权利,除了在特定的时间间隔填充。

我真的很感谢你的帮助。谢谢!

回答

1

你可以使用cut

#Use cut to divide price into groups and table to count frequency of each group 
temp = data.frame(table(cut(x = diamonds$price, breaks = seq(250, 1000, 10)))) 
ggplot(diamonds) + 
    geom_histogram(
     aes(x = price), 
     binwidth = 10, 
     breaks = seq(250, 1000, 10), 
     color = "black", 
     #For the group with maximum value, assign red, otherwise assign black 
     fill = replace(rep("black", NROW(temp)), which.max(temp$Freq), "red")) 

enter image description here

+1

设置,'频率== MAX(频率)'是棘手的部分,以适应就是OP后大概是最好的'ggplot'以外的计算。 –

+0

谢谢,它的工作原理。我只是会有一个问题,为什么你需要创建“温度”? –

+0

@ChristophP。,'geom_histogram'为每个休息时间创建休息和情节计数。我使用'cut'在'ggplot'之外创建了'temp'来完成同样的事情,这样就可以更容易地识别最高计数的中断。 –