gpt4 book ai didi

r - 为异常绘制两条线之间的空间

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

嗨,我想用红色和蓝色(代表异常)绘制两条线之间的空间,但我没有成功。仅绘制蓝色异常。
这是我的代码:

library(RCurl)
t <- getURL("https://raw.githubusercontent.com/vladamihaesei/weather_covid/master/Tab/UVanomaly.csv")## if can not download it, try manually
t <- read.csv(text =t)
head(t)
ggplot(t, aes(x=data, y=uv1920)) +
geom_line(aes(y = uv1920)) +
geom_line(aes(y = uv01_19)) +
geom_ribbon(data=subset(t, uv1920 <= uv01_19),
aes(ymin=uv1920,ymax=uv01_19), fill="blue") +
#scale_y_continuous(expand = c(0, 0), limits=c(0,20)) +
#scale_x_continuous(expand = c(0, 0), limits=c(0,5)) +
scale_x_date(date_breaks = "2 weeks", date_labels = "%d%b")+
scale_fill_manual(values=c("red","blue"))
enter image description here

最佳答案

填充行之间的空间的一种方法可能看起来像这样。
基本思想是将period中的数据进行拆分。 s 可以映射到 group AES。
不幸的是,这不是一个完美的解决方案。如您所见,我们在交叉点处出现了间隙。我最近做了一些类似的事情,用大量的手工工作来填补空白,但交点要少得多。也许其他人有更通用和可行的解决方案来解决这个问题。

t <- read.csv("https://raw.githubusercontent.com/vladamihaesei/weather_covid/master/Tab/UVanomaly.csv")

library(ggplot2)
library(dplyr)

t1 <- t %>%
mutate(date = as.Date(data1),
diff = uv1920 <= uv01_19,
period = cumsum(diff != lag(diff, default = TRUE)))
t1 %>%
ggplot(aes(x=date)) +
geom_line(aes(y = uv1920)) +
geom_line(aes(y = uv01_19)) +
geom_ribbon(aes(ymin =uv1920, ymax=uv01_19, group = period, fill = diff)) +
scale_x_date(date_breaks = "2 weeks", date_labels = "%d%b")+
scale_fill_manual(values=c("red","blue"))

关于r - 为异常绘制两条线之间的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62639329/

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