# Basic knitr options library(knitr) opts_chunk$set(comment = NA, echo = FALSE, warning = FALSE, message = FALSE, error = TRUE, cache = FALSE, fig.path = 'figures/')
# Libraries library(vilaweb) library(rtweet) library(tidyverse) library(databrew) library(translateR) library(sentimentr) # https://github.com/trinker/sentimentr require(RPostgreSQL) require(readr) require(DBI)
if(file.exists('tl.RData')){ load('tl.RData') } else { # Connect to the db pg = DBI::dbDriver("PostgreSQL") con = DBI::dbConnect(pg, dbname="twitter") tl <- RPostgreSQL::dbGetQuery( con, paste0("SELECT * FROM twitter") ) save(tl, file = 'tl.RData') dbDisconnect(con) } # Search for the words wordiation find_word <- function(x){ grepl('comando', tolower(x)) & !grepl('-Comando', x, fixed =TRUE) # grepl('paz|pau|pacífico|pacíficamente|pacíficament|pacífica', tolower(x)) # grepl('golp', tolower(x)) } tl <- tl %>% mutate(word = find_word(tweet))
pd <- tl %>% # filter(tolower(username) %in% tolower(people)) %>% # filter(word) %>% filter(date >= '2018-01-01', date <= '2018-12-31') %>% # mutate(date = as.Date(cut(date, 'month'))) %>% group_by(word, person = username) %>% tally %>% ungroup %>% group_by(person) %>% mutate(all = sum(n, na.rm = TRUE)) %>% ungroup %>% filter(word) %>% mutate(p = n / all * 100) left <- expand.grid(# word = sort(unique(tl$word)), # date = seq(min(pd$date), # max(pd$date), # by = 'month'), person = sort(unique(tl$username))) pd <- left_join(left, pd) pd$n[is.na(pd$n)] <- 0 pd$p[is.na(pd$p)] <- 0 make_simple_plot <- function(pz = sort(unique(pd$person))){ ppd <- pd %>% dplyr::filter(person %in% pz) %>% mutate(person = paste0('@', person)) ppd <- ppd %>% arrange(n) %>% filter(!is.na(n), # n > 1, !person %in% congress$user_name) ppd <- ppd %>% arrange(desc(n)) ppd <- ppd %>% dplyr::filter(person %in% paste0('@', c(#'junqueras', # 'krls', # 'quimtorraipla', # 'perearagones', 'sanchezcastejon', # 'rogertorrent', 'carmencalvo_', 'inesarrimadas', 'albert_rivera', 'pablo_iglesias_', 'alevysoler', 'j_zaragoza_', 'carrizosacarlos', 'eva_granados', # 'ppcatalunya', 'alejandrotgn', 'albiol_xg', # 'societatcc', # 'joantarda', 'santi_abascal', # 'pdemocratacat', 'pablo_casado_', # 'ciudadanoscs', # 'socialistes_cat', # 'espciudadana', 'pablocasado',#'esquerra_erc', 'miqueliceta', #'pdemocratacat', 'perearagones',#'albanodante76', # 'quimtorraipla', # 'cupnacional', # 'krls', # 'gabrielrufian', 'junqueras','rogertorrent', # 'carlescampuzano', 'pablo_iglesias_'))) # ppd <- ppd %>% # filter(!person %in% # paste0('@', # c('pnique', # 'isabelbonig', # 'enricmorera', # 'compromis'))) # ppd <- ppd[c(1:16),] ppd$person <- factor(ppd$person, levels = rev(ppd$person)) ggplot(data = ppd, aes(x = person, y = n)) + geom_bar(stat = 'identity', width = 0.85, fill = 'darkorange') + theme_databrew() + labs(x = '', y = 'Tweets', title = 'Tweets con la palabra "comando(s)"', # caption = '', # subtitle = '*Incluye también "golpista", "golpistas", etc.', subtitle = 'Año 2018') + theme(legend.position = 'none') + theme(#axis.text.x = element_text(angle = 90, # size = 7), plot.title = element_text(size = 25), plot.subtitle = element_text(size = 17), # plot.subtitle = element_text(size = 35), strip.text = element_text(size = 25)) + geom_text(aes(label = round(n, digits = 1)), alpha = 0.6, size = 5.5, nudge_y = 1) + coord_flip() + theme(axis.text.y = element_text(size = 18)) } make_simple_plot() ggsave('~/Desktop/golpe.png')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.