R-код для построения диапазона дат в виде столбца или линии для ряда категориальных переменных - PullRequest
0 голосов
/ 16 мая 2019

Я изо всех сил пытаюсь сделать это в R. У меня есть список названий станций с двумя связанными переменными: Дата начала и Дата окончания. То, что я хотел бы сделать, это построить горизонтальную линию или гистограмму, которая варьируется от начальной и конечной даты для каждого названия станции.

Я пытался использовать ggplot, но, признаюсь, я недавно был пользователем R.

1 Ответ

0 голосов
/ 16 мая 2019

Если у вас есть данные, похожие на это (dput в конце) с

  • дата начала
  • дата окончания
  • имя задачи или имя станции
  • и необязательное имя группы

(я изобрел некоторые данные, так как ОП не предоставляет данные)

StartDate    EndDate                                    TaskName               Group
1  2018-10-01 2018-11-02                  KPI: high level definition      KPI Definition
2  2018-11-05 2018-11-16                       KPI: data translation      KPI Definition
3  2019-02-18 2019-03-01                          KPI: corroboration      KPI Definition
4  2018-11-05 2018-11-16                KPI: Define Graphical Format      KPI Definition
5  2018-10-22 2018-12-07                            Data: Which data Define and Get Data
6  2018-10-08 2018-10-19                  Data: Mail requesting data Define and Get Data
7  2018-12-07 2018-12-14                    Data: Mail defining data Define and Get Data
8  2018-12-17 2018-12-28                        Data: Test data dump Define and Get Data
9  2018-12-17 2018-12-28                         Data: CSV temporary Define and Get Data
10 2018-12-31 2019-01-25       Data: Quality inspection of Data Dump Define and Get Data
11 2018-12-31 2019-01-25                         Data: Create graphs Define and Get Data
12 2019-01-28 2019-02-15 Data: Correct data comparison with KPI defs Define and Get Data
13 2019-02-04 2019-03-01         Data: Create and publish ppt format Define and Get Data
14 2018-11-19 2018-12-14                              Storage: Where             Storage
15 2018-11-19 2018-12-14                           Storage: How much             Storage

Вам нужно будет поместить его в длинный формат (отдельная строка для начала и конца)

library(ggplot2)
library(reshape2) # for melt to get the data in long format

m_planning_data2 <- melt(planning_data2, measure.vars = c("StartDate", "EndDate"))

Затем постройте его, используя ggplot:

ggplot(m_planning_data2, aes(value, TaskName)) +
  geom_line(size=4) +
  xlab(NULL) +
  ylab(NULL) +
  ggtitle("Example Assignment Planning 1") +
  theme_minimal() +
  theme(aspect.ratio = 0.4, axis.text = element_text(size = 7))

... получая этот простой сюжет:

enter image description here

Или нанесите его с группировкой и аннотацией на «сегодня»

ggplot(m_planning_data2, aes(value, TaskName, col = Group)) +
  geom_line(size=4) +
  xlab(NULL) +
  ylab(NULL) +
  ggtitle("Example Assignment Planning 2") +
  geom_vline(xintercept = as.POSIXct(as.Date(Sys.time())) , linetype = 1, size=1.5, colour = "purple", alpha= .5) +
  annotate("text", x =  as.POSIXct(as.Date(Sys.time())) + 86400*1.5, y = 3, 
           label = as.Date(Sys.time()), colour = "purple", angle=90, size= 3) + 
    theme_minimal() +
    theme(aspect.ratio = 0.4, axis.text = element_text(size = 7)) 

... получая следующий участок:

enter image description here

Пожалуйста, дайте мне знать, за чем вы охотились.

DATA

structure(list(StartDate = structure(c(1538344800, 1541372400, 
1550444400, 1541372400, 1540159200, 1538949600, 1544137200, 1545001200, 
1545001200, 1546210800, 1546210800, 1548630000, 1549234800, 1542582000, 
1542582000), class = c("POSIXct", "POSIXt"), tzone = ""), EndDate = structure(c(1541113200, 
1542322800, 1551394800, 1542322800, 1544137200, 1539900000, 1544742000, 
1545951600, 1545951600, 1548370800, 1548370800, 1550185200, 1551394800, 
1544742000, 1544742000), class = c("POSIXct", "POSIXt"), tzone = ""), 
    TaskName = structure(c(13L, 11L, 10L, 12L, 9L, 6L, 5L, 8L, 
    4L, 7L, 3L, 1L, 2L, 15L, 14L), .Label = c("Data: Correct data comparison with KPI defs", 
    "Data: Create and publish ppt format", "Data: Create graphs", 
    "Data: CSV temporary", "Data: Mail defining data", "Data: Mail requesting data", 
    "Data: Quality inspection of Data Dump", "Data: Test data dump", 
    "Data: Which data", "KPI: corroboration", "KPI: data translation", 
    "KPI: Define Graphical Format", "KPI: high level definition", 
    "Storage: How much", "Storage: Where"), class = "factor"), 
    Group = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 3L, 3L), .Label = c("Define and Get Data", "KPI Definition", 
    "Storage"), class = "factor")), .Names = c("StartDate", "EndDate", 
"TaskName", "Group"), row.names = c(NA, -15L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...