Графики дат по будням и группам - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы сравнить значения разных недель в разных группах. Что-то вроде ежедневных продаж для двух членов команды за неделю, чтобы продемонстрировать эффект от того, что один человек не работает / в отпуск и т. Д. Время продажи в течение каждого дня должно быть заказано в течение дня, но ось X должна быть помечена днем. Пример произвольный.

Пример данных и выходных данных

stringsAsFactors =FALSE
library(lubridate)
library(tidyverse)
library(magrittr)
#=======================
# Week on week comparison of days by a group
#=======================
# Generate DF
Date <- data.frame(Date = rep(seq(as.Date("2020-04-01"),as.Date("2020-04-14"),by="days"),4))
Time <- data.frame(Time = c(rep("00:00:01",nrow(Date)/2),rep("00:00:02",nrow(Date)/2)))
Type <- data.frame(Type = rep(c(rep("a",nrow(Date)/4),rep("b",nrow(Date)/4)),2))
df <- cbind(Date,Time,Type)

# Add random values to plot
df %<>% mutate(values = runif(nrow(.),1,10))

# Create a groups for weeks, orders for days and labels as weekdays (char strings).
df %<>% mutate(weekLevel = week(Date), 
               dayLevel = wday(Date), 
               Day = as.character(weekdays(Date)), 
               orderVar = paste0(dayLevel, Time))


ggplot(df %>% arrange(orderVar), aes(x =  orderVar, y = values,group = interaction(Type,weekLevel),colour=Type))+
  geom_line()+
  scale_x_discrete(breaks =df$orderVar , labels = df$Day) +
  theme(axis.text.x = element_text(angle =  90, hjust=1))

Это работает, но день повторяется, потому что разрывы установлены на более детальный уровень, чем метки. Это также кажется немного хакерским.

Любой и все отзывы приветствуются:)

...