ggplot2 - 突出显示特定值

Sal*_*Sal 0 r ggplot2

我有一个产品数据框和生产它们的时间(天):

test <- structure(list(product = c("prod.1", "prod.2", "prod.3", "prod.4", "prod.5",
"prod.6", "prod.7", "prod.8", "prod.9", "prod.10", "prod.11", "prod.12", "prod.13", 
"prod.14", "prod.15", "prod.16", "prod.17", "prod.18", "prod.19", "prod.20", "prod.21", 
"prod.22", "prod.23", "prod.24", "prod.25", "prod.26", "prod.27", "prod.28", "prod.29", 
"prod.30", "prod.31", "prod.32", "prod.33", "prod.34", "prod.35", "prod.36", "prod.37", 
"prod.38", "prod.39", "prod.40", "prod.41", "prod.42", "prod.43", "prod.44", "prod.45", 
"prod.46", "prod.47", "prod.48", "prod.49", "prod.50"), prodTime = c(4.03, 3.8, 3.75, 
3.74, 3.72, 3.7, 3.66, 3.66, 3.66, 3.64, 3.63, 3.63, 3.63, 3.6, 3.6, 3.58, 3.58, 3.58, 
3.57, 3.57, 3.57, 3.56, 3.56, 3.56, 3.56, 3.55, 3.53, 3.53, 3.53, 3.53, 3.53, 3.52, 3.51, 
3.51, 3.51, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.49, 3.49, 3.48, 3.48, 3.48, 3.48, 
3.47)), .Names = c("product", "prodTime"), row.names = c(NA, -50L), class = 
c("data.frame"))
Run Code Online (Sandbox Code Playgroud)

并输出几乎我想要的情节没有问题:

ggplot(data=test, aes(x=prodTime, y=reorder(factor(product), prodTime))) +
  geom_segment(aes(yend=product, xend=0)) + 
  geom_point() + 
  coord_cartesian(xlim=c(2.5, 4.25)) + 
  theme_minimal() + 
  theme(panel.grid.major.y=element_blank(), 
        axis.ticks=element_blank()) + 
  labs(x='', y='') + 
  geom_vline(aes(xintercept=3.7), color = 'red', linetype = 'dashed') +
  geom_vline(aes(xintercept=3.3), color = 'blue', linetype = 'dashed')
Run Code Online (Sandbox Code Playgroud)

然而,我想要获得的是类似的情节,其中所有产品标签(prod.01至prod.50),片段和点将是非常浅灰色但是其中一些将突出显示(例如,以不同的颜色) ).将prod.03,prod.12,prod.29,prod.41称为要突出显示的唯一(标签,片段和点).

任何建议都是最受欢迎的.

Did*_*rts 5

在数据框中添加新列,其中产品分为两组(应突出显示或不突出显示).

test$high<-ifelse(test$product %in% c("prod.3", "prod.12", "prod.29", "prod.41"),"Yes","No")
Run Code Online (Sandbox Code Playgroud)

然后使用这个新列color=aes()ggplot().你可以改变的颜色scale_color_manual().

ggplot(data=test,aes(x=prodTime,y=reorder(factor(product),prodTime),color=high)) + 
      geom_segment(aes(yend=product, xend=0)) + geom_point() + 
      coord_cartesian(xlim=c(2.5, 4.25)) + theme_minimal() + 
      theme(panel.grid.major.y=element_blank(), axis.ticks=element_blank()) + 
      labs(x='', y='') + 
      geom_vline(aes(xintercept=3.7), color = 'red', linetype = 'dashed') +
      geom_vline(aes(xintercept=3.3), color = 'blue', linetype = 'dashed')+
      scale_color_manual(values=c("grey50","red"),guide=FALSE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述