我正在使用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()
手动填充区域,但这似乎不是很优雅,我甚至不确定它是否可行。
任何建议都很感谢,谢谢。
发布于 2019-05-16 06:20:03
您只需要创建period的子集。在本例中,我创建了一个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()
https://stackoverflow.com/questions/55639337
复制相似问题