Построение линейного графика с использованием ggplot2 с использованием дат

#r #date #ggplot2 #tidyverse

Вопрос:

Итак, у меня есть список дат и соответствующих данных следующим образом:

 DATE        Event
7/14/2021   Start
7/14/2021   Start
7/14/2021   Start
7/14/2021   Start
7/13/2021   Start
7/12/2021   Start
7/12/2021   Start
7/12/2021   Start
7/12/2021   Start
7/12/2021   Start
7/12/2021   Start
7/11/2021   Start
7/11/2021   Start
7/6/2021    Submit
6/30/2021   Submit
6/25/2021   Submit
6/24/2021   Submit
6/23/2021   Submit
6/22/2021   Submit
6/22/2021   Submit
 

Все, что я хочу сделать, это иметь 1 участок с двумя линиями:

  • ось x: ДАТА
  • ось y: количество записей
  • Строка 1: Начинается
  • Строка 2: Представляет

Я пытаюсь сделать это с помощью ggplot и tidyverse, любая помощь приветствуется!!

Ответ №1:

** видел ваш комментарий, если вы хотите иметь отдельные строки, основанные на поле события, используйте аргумент group в функции ggplot() . Вы также можете добавить цвет по событию. Я добавил это в код.

Это должно сработать для вас. Найдите встроенный комментарий, который начинается с «# это та часть, которая вас интересует».

 # original data
df = data.frame(DATE........Event = c("7/14/2021   Start",
                                      "7/14/2021   Start","7/14/2021   Start",
                                      "7/14/2021   Start","7/13/2021   Start",
                                      "7/12/2021   Start","7/12/2021   Start","7/12/2021   Start",
                                      "7/12/2021   Start","7/12/2021   Start",
                                      "7/12/2021   Start","7/11/2021   Start","7/11/2021   Start",
                                      "7/6/2021   Submit","6/30/2021   Submit",
                                      "6/25/2021   Submit","6/24/2021   Submit",
                                      "6/23/2021   Submit","6/22/2021   Submit","6/22/2021   Submit")
)

# had to fix the data, because of the way you posted it
names(df)[1] <- "Date"
df <- separate(df, Date, into = c("Date", "Event"), sep = "   ")

# this is the part you're interested in
# first you need the date to be a date object
# the library lubridate is the best option for simplicity
df <- df %>% mutate(Date = lubridate::mdy(Date))

# then you can graph the count
#               and group by event**
ggplot(df, aes(x = Date, 
               group = Event,
               color = Event))   
  geom_line(stat = "count")
 

Вот как это выглядит:
введите описание изображения здесь

Комментарии:

1. Это не совсем так, мне нужна строка для начала и строка для отправки, две строки на один сюжет.

2. Это выглядит более правильно, вы можете обновить сюжет?

3. @John Thomas Я обновил график после того, как изначально обновил код. Однако это было до вашего комментария. График выровнен по коду. Может быть, ты смотрела на него, пока я его менял?

4. К вашему сведению, @Kat, вы можете легче читать данные, используя read.table("clipboard", header = TRUE) Windows (и Linux, я думаю) и read.table(pipe("pbpaste"), header=TRUE) macos (как после выделения текста данных в вопросе, так и копирования). Он будет читать это в виде рамки из двух столбцов без необходимости separate(.) (хотя ему все еще нужно mdy или as.Date ).