gpt4 book ai didi

r - 在ggplot2中突出显示特定x范围内的区域

转载 作者:行者123 更新时间:2023-12-04 11:11:58 24 4
gpt4 key购买 nike

我想突出显示 ggplot2 图的某些区域,类似于此处所做的:How to highlight time ranges on a plot?

我有一个向量 v 0 0 1 1 1 ...这表明每次我是否希望突出显示图形的那部分,是或否。也就是说,与上面的问题相反,我没有应该突出显示的每个范围的 xmin 和 xmax 值,但我也怀疑这是否可行,因为我需要突出显示多个范围。

有没有办法用类似 dates[v == 1] 的内容来编写突出显示的情节语句? (日期是图的 x 轴带有日期的向量)?
如果没有,还有其他好的方法吗?

最佳答案

使用 diff要使区域为矩形着色,其余的非常简单。

## Example data
set.seed(0)
dat <- data.frame(dates=seq.Date(Sys.Date(), Sys.Date()+99, 1),
value=cumsum(rnorm(100)))

## Determine highlighted regions
v <- rep(0, 100)
v[c(5:20, 30:35, 90:100)] <- 1

## Get the start and end points for highlighted regions
inds <- diff(c(0, v))
start <- dat$dates[inds == 1]
end <- dat$dates[inds == -1]
if (length(start) > length(end)) end <- c(end, tail(dat$dates, 1))

## highlight region data
rects <- data.frame(start=start, end=end, group=seq_along(start))

library(ggplot2)
ggplot(data=dat, aes(dates, value)) +
theme_minimal() +
geom_line(lty=2, color="steelblue", lwd=1.1) +
geom_point() +
geom_rect(data=rects, inherit.aes=FALSE, aes(xmin=start, xmax=end, ymin=min(dat$value),
ymax=max(dat$value), group=group), color="transparent", fill="orange", alpha=0.3)

enter image description here

关于r - 在ggplot2中突出显示特定x范围内的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32543176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com