首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据时间段对图形的不同区域进行着色

根据时间段对图形的不同区域进行着色
EN

Stack Overflow用户
提问于 2019-04-12 02:49:56
回答 1查看 77关注 0票数 0

我正在使用ggplot2创建一个图表,它获取x轴上的日期(即1000年前)和y轴上的概率。我想通过对图形的不同颜色区域进行着色来区分不同的时间段。我在这里存储了以下日期:

代码语言:javascript
复制
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()手动填充区域,但这似乎不是很优雅,我甚至不确定它是否可行。

任何建议都很感谢,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 06:20:03

您只需要创建period的子集。在本例中,我创建了一个sub向量来转换为一个因子,以便于填充。

代码语言:javascript
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55639337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档