我有一个产品数据框和生产它们的时间(天):
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"))
并且输出几乎我想要的情节没有问题:
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')
然而,我想要得到的是一个类似的情节,其中所有产品标签(prod.01至prod.50),片段和点将是非常浅灰色但其中一些将突出显示(例如,不同的颜色)。将prod.03,prod.12,prod.29,prod.41称为要突出显示的唯一(标签,片段和点)。
任何建议都是最受欢迎的。
答案 0 :(得分:5)
在数据框中添加新列,其中产品分为两组(应突出显示或不突出显示)。
test$high<-ifelse(test$product %in% c("prod.3", "prod.12", "prod.29", "prod.41"),"Yes","No")
然后在color=
的{{1}} aes()
中使用此新列。您可以使用ggplot()
更改颜色。
scale_color_manual()