我正在使用ggplot2
创建一个图形,该图形在x轴上(即1000年前)采用日期,而在y轴上采用概率。我想通过用不同颜色的阴影区域来区分不同的时间段。我在这里存储了以下日期:
paleo.dates <- c(c(13500,8000), c(13500,10050) ,c(10050,9015),
c(9015,8000), c(8000,2500), c(8000,5500), c(5500,3500), c(3500,2500),
c(2500,1150), c(2500,2000), c(2000,1500), c(1500,1150), c(1150,500))
我想要一个时间段,例如13500到8000,并对其进行颜色编码,直到它与另一个日期(例如第三项)重叠。
我正在使用ggplot2作弊,并且尝试使用aes(fill = paleo.dates)
,但这不起作用,因为它的长度与我的数据集的长度不同。我还考虑过使用+ geom_rect()
来手动填充区域,但这似乎不是很优雅,而且我不确定它是否还能使用。
任何建议,谢谢。
答案 0 :(得分:1)
您只需要创建期间的子集。在这种情况下,我创建了一个sub
向量,以转换为便于填充的因子。
library(dplyr)
library(ggplot2)
df <- data.frame(paleo.dates = seq(500, 13000, 100),
p = runif(n = length(seq(500, 13000, 100)),
0, 1))
sub <- data.frame(sub = rep(1:(13000/500), each = 5))
sub <- sub %>%
dplyr::slice(1:nrow(df))
df <- df %>%
dplyr::mutate(period = sub$sub,
period = as.factor(period))
ggplot2::ggplot(df) +
geom_bar(aes(x = paleo.dates, y = p,
fill = period,
col = period),
show.legend = F, stat = "identity") +
theme_bw()