【问题标题】:plot lines representing date ranges表示日期范围的绘图线
【发布时间】:2019-03-02 11:14:14
【问题描述】:

我有以下数据

MIN           MAX        GENDER
01/01/2002    17/12/2010   MAN
04/05/2012     07/08/2018  WOMAN

我正在尝试为每一行绘制一条从 MIN 开始到 MAX 结束的线,如图所示。

我正在尝试ggplot2

date <- c("2002-01-01", "2010-12-17", "2012-04-05", "2018-08-07"
    group <- c("Man", "Woman")
    df <- as.data.frame(cbind(date, group))
    library(tidyverse)
    df %>%
    mutate(date = as.POSIXct(date)) %>% #convert to date
  group_by(group, date)  #group

但找不到如何获取日期之间的差异来绘制线条。

【问题讨论】:

  • 什么是 Y 轴?

标签: r ggplot2


【解决方案1】:

获取数据

txt <- "MIN           MAX        GENDER
01/01/2002    17/12/2010   MAN
04/05/2012     07/08/2018  WOMAN"

dta <- read.table(textConnection(txt), header =TRUE)
dta$MIN <- as.Date(dta$MIN, format = "%d/%m/%Y")
dta$MAX <- as.Date(dta$MAX, format = "%d/%m/%Y")

剧情

dta %>% 
  group_by(GENDER) %>% 
  tidyr::gather(key, value, -GENDER) %>% 
  ggplot(aes(GENDER, value)) + 
  geom_line(aes(color = GENDER)) + 
  coord_flip() + 
  scale_y_date(breaks = c(dta$MIN, dta$MAX)) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2020-12-23
    相关资源
    最近更新 更多