Advertisement
Guest User

Untitled

a guest
May 13th, 2018
562
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 2.03 KB | None | 0 0
  1. library(ggplot2)
  2. library(dplyr)
  3. library(rvest)
  4. library(scales)
  5.  
  6. rows <- read_xml('mom_texts.xml') %>% xml_nodes('sms')
  7. people <- c("Mom", "Kyle")
  8. df <- data.frame(
  9.   ID = rows %>% xml_attr("type"),
  10.   date = rows %>% xml_attr("readable_date"),
  11.   body = rows %>% xml_attr("body")
  12. )
  13.  
  14. # mutate(df, datetime = strptime(date, "%b %d, %Y %H:%M:%S %p"))
  15.  
  16. heat_by_day <- ggplot(data = df, aes(as.Date(date, "%b %d, %Y %H:%M:%S %p"), ID)) +
  17.   geom_bin2d(binwidth = c(1, 1)) +
  18.   scale_x_date(breaks = date_breaks("weeks")) +
  19.   theme_solarized_2() +
  20.   theme(axis.text.x = element_text(angle = 75, hjust = 1)) +
  21.   labs(title = "Text messages per day, per person",
  22.        x = "Date",
  23.        y = "Person")
  24.  
  25. heat_by_day +
  26. #  geom_rect(mapping = aes(xmin = as.Date('Apr 21, 2018 12:00:00', "%b %d, %Y %H:%M:%S") + 0.5, ymin = 0.5,
  27. #                xmax = as.Date('Apr 22, 2018 16:00:00', "%b %d, %Y %H:%M:%S") + 16/24, ymax = 2.5),
  28. #                color = 'gray42', fill = 'forestgreen', alpha = 0.7) +
  29.   scale_y_discrete(labels = people)
  30.  
  31.  
  32. df <- df %>% mutate(char_length = nchar(as.character(body)))
  33.  
  34. text_lengths_by_datetime <- ggplot(data = df %>% group_by(ID), aes(strptime(date, "%b %d, %Y %H:%M:%S %p"), df$char_length, color = df$ID)) +
  35.   geom_point() +
  36.   geom_smooth() +
  37.   scale_x_datetime(breaks = date_breaks("weeks")) +
  38.   theme_solarized_2() +
  39.   theme(axis.text.x = element_text(angle = 75, hjust = 1)) +
  40.   labs(title = "Text Lengths by Date",
  41.        x = "Date and Time",
  42.        y = "Character Length")
  43.  
  44. text_lengths_by_datetime +
  45.   scale_color_discrete(
  46.     name = "Person",
  47.     breaks = c("1", "2"),
  48.     labels = people
  49.     )
  50.  
  51. violin_char_length <- ggplot(data = df %>% group_by(ID), aes(ID, char_length, fill = ID)) +
  52.   geom_violin() +
  53.   geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 3) +
  54.   theme_solarized_2() +
  55.   labs(title = "Distribution of Text Lengths",
  56.        x = "Person",
  57.        y = "Character Length")
  58.  
  59. violin_char_length +
  60.   scale_x_discrete(labels = people) +
  61.   theme(legend.position = "none")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement