Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(ggplot2)
- library(dplyr)
- library(rvest)
- library(scales)
- rows <- read_xml('mom_texts.xml') %>% xml_nodes('sms')
- people <- c("Mom", "Kyle")
- df <- data.frame(
- ID = rows %>% xml_attr("type"),
- date = rows %>% xml_attr("readable_date"),
- body = rows %>% xml_attr("body")
- )
- # mutate(df, datetime = strptime(date, "%b %d, %Y %H:%M:%S %p"))
- heat_by_day <- ggplot(data = df, aes(as.Date(date, "%b %d, %Y %H:%M:%S %p"), ID)) +
- geom_bin2d(binwidth = c(1, 1)) +
- scale_x_date(breaks = date_breaks("weeks")) +
- theme_solarized_2() +
- theme(axis.text.x = element_text(angle = 75, hjust = 1)) +
- labs(title = "Text messages per day, per person",
- x = "Date",
- y = "Person")
- heat_by_day +
- # geom_rect(mapping = aes(xmin = as.Date('Apr 21, 2018 12:00:00', "%b %d, %Y %H:%M:%S") + 0.5, ymin = 0.5,
- # xmax = as.Date('Apr 22, 2018 16:00:00', "%b %d, %Y %H:%M:%S") + 16/24, ymax = 2.5),
- # color = 'gray42', fill = 'forestgreen', alpha = 0.7) +
- scale_y_discrete(labels = people)
- df <- df %>% mutate(char_length = nchar(as.character(body)))
- 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)) +
- geom_point() +
- geom_smooth() +
- scale_x_datetime(breaks = date_breaks("weeks")) +
- theme_solarized_2() +
- theme(axis.text.x = element_text(angle = 75, hjust = 1)) +
- labs(title = "Text Lengths by Date",
- x = "Date and Time",
- y = "Character Length")
- text_lengths_by_datetime +
- scale_color_discrete(
- name = "Person",
- breaks = c("1", "2"),
- labels = people
- )
- violin_char_length <- ggplot(data = df %>% group_by(ID), aes(ID, char_length, fill = ID)) +
- geom_violin() +
- geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 3) +
- theme_solarized_2() +
- labs(title = "Distribution of Text Lengths",
- x = "Person",
- y = "Character Length")
- violin_char_length +
- scale_x_discrete(labels = people) +
- theme(legend.position = "none")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement