我花了一天的时间对此进行黑客攻击和搜索。希望有人能帮忙。我正在为一季的节目制作一系列下载。我想隔离一集并给它一种颜色,同时让其他线条保持中性。我之前使用 ifelse 使用 geom_point 图完成了此操作。我用 geom_line 尝试过的任何东西都不起作用。我觉得解决方案很简单,所以如果它就在我面前,请原谅我。我知道我可以通过手动强制使用定义的颜色向量来实现这一点,但是我想切换变量并且不想每次都手动重新创建一个带有颜色值的向量。
library(plyr)
library(dplyr)
library(ggplot2)
set.seed(407)
getResults <- function(ep_title) {
days_in_release <- c(1:5)
downloads <- rbinom(5, 1000, .2)
cum_downloads <- cumsum(downloads)
data.frame(days_in_release, downloads, cum_downloads, ep_title)
}
eps <- c("Foo", "Bar", "Gamma", "Ray", "Comet")
season <- lapply(eps, getResults)
season_tidy <- rbind.fill(season)
season_tidy %>%
ggplot(aes(days_in_release, cum_downloads, col = ep_title)) +
geom_line() +
scale_color_manual(aes(color = ifelse("Foo" %in% ep_title, "red", "grey")))
最佳答案
你可以使用 gghighlight
library(gghighlight)
ggplot(season_tidy, aes(days_in_release, cum_downloads, col = ep_title)) +
geom_line() +
gghighlight(ep_title == "Foo")
阅读小插图以了解更多详细信息,
vignette("gghighlight")
。关于r - 如何以编程方式从ggplot中的一系列行中分离出一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53927770/