Last active
December 13, 2020 09:40
-
-
Save audhiaprilliant/7911d764e2c4aad81df6256007541486 to your computer and use it in GitHub Desktop.
Twitter Data Visualization using ggplot2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # BARPLOT OF TWEETS - JOKO WIDODO | |
| data.jokowi.df$created = ymd_hms(data.jokowi.df$created, | |
| tz = 'Asia/Jakarta') | |
| # Another way to make 'Date' and 'Hour' variables | |
| data.jokowi.df$date = date(data.jokowi.df$created) | |
| data.jokowi.df$hour = hour(data.jokowi.df$created) | |
| # Date 2019-05-29 | |
| data.jokowi.date1 = subset(x = data.jokowi.df, | |
| date == '2019-05-29') | |
| data.hour.date1 = data.frame(table(data.jokowi.date1$hour)) | |
| colnames(data.hour.date1) = c('Hour','Total.Tweets') | |
| # Create data viz | |
| ggplot(data.hour.date1)+ | |
| geom_bar(aes(x = Hour, | |
| y = Total.Tweets, | |
| fill = I('blue')), | |
| stat = 'identity', | |
| alpha = 0.75, | |
| show.legend = FALSE)+ | |
| geom_hline(yintercept = mean(data.hour.date1$Total.Tweets), | |
| col = I('black'), | |
| size = 1)+ | |
| geom_text(aes(fontface = 'italic', | |
| label = paste('Average:', | |
| ceiling(mean(data.hour.date1$Total.Tweets)), | |
| 'Tweets per hour'), | |
| x = 8, | |
| y = mean(data.hour.date1$Total.Tweets)+20), | |
| hjust = 'left', | |
| size = 4)+ | |
| labs(title = 'Total Tweets per Hours - Joko Widodo', | |
| subtitle = '28 May 2019', | |
| caption = 'Twitter Crawling 28 - 29 May 2019')+ | |
| xlab('Time of Day')+ | |
| ylab('Total Tweets')+ | |
| scale_fill_brewer(palette = 'Dark2')+ | |
| theme_bw() | |
| # BARPLOT OF TWEETS - PRABOWO SUBIANTO | |
| data.prabowo.df$created = ymd_hms(data.prabowo.df$created, | |
| tz = 'Asia/Jakarta') | |
| # Another way to make 'Date' and 'Hour' variables | |
| data.prabowo.df$date = date(data.prabowo.df$created) | |
| data.prabowo.df$hour = hour(data.prabowo.df$created) | |
| # Date 2019-05-28 | |
| data.prabowo.date1 = subset(x = data.prabowo.df, | |
| date == '2019-05-28') | |
| data.hour.date1 = data.frame(table(data.prabowo.date1$hour)) | |
| colnames(data.hour.date1) = c('Hour','Total.Tweets') | |
| # Date 2019-05-29 | |
| data.prabowo.date2 = subset(x = data.prabowo.df, | |
| date == '2019-05-29') | |
| data.hour.date2 = data.frame(table(data.prabowo.date2$hour)) | |
| colnames(data.hour.date2) = c('Hour','Total.Tweets') | |
| data.hour.date3 = rbind(data.hour.date1,data.hour.date2) | |
| data.hour.date3$Date = c(rep(x = '2019-05-28', | |
| len = nrow(data.hour.date1)), | |
| rep(x = '2019-05-29', | |
| len = nrow(data.hour.date2))) | |
| data.hour.date3$Labels = c(letters,'A','B') | |
| data.hour.date3$Hour = as.character(data.hour.date3$Hour) | |
| data.hour.date3$Hour = as.numeric(data.hour.date3$Hour) | |
| # Data pre-processing | |
| for (i in 1:nrow(data.hour.date3)) { | |
| if (i%%2 == 0) { | |
| data.hour.date3[i,'Hour'] = '' | |
| } | |
| if (i%%2 == 1) { | |
| data.hour.date3[i,'Hour'] = data.hour.date3[i,'Hour'] | |
| } | |
| } | |
| data.hour.date3$Hour = as.factor(data.hour.date3$Hour) | |
| # Data viz | |
| ggplot(data.hour.date3)+ | |
| geom_bar(aes(x = Labels, | |
| y = Total.Tweets, | |
| fill = Date), | |
| stat = 'identity', | |
| alpha = 0.75, | |
| show.legend = TRUE)+ | |
| geom_hline(yintercept = mean(data.hour.date3$Total.Tweets), | |
| col = I('black'), | |
| size = 1)+ | |
| geom_text(aes(fontface = 'italic', | |
| label = paste('Average:', | |
| ceiling(mean(data.hour.date3$Total.Tweets)), | |
| 'Tweets per hour'), | |
| x = 5, | |
| y = mean(data.hour.date3$Total.Tweets)+6), | |
| hjust = 'left', | |
| size = 3.8)+ | |
| scale_x_discrete(limits = data.hour.date3$Labels, | |
| labels = data.hour.date3$Hour)+ | |
| labs(title = 'Total Tweets per Hours - Prabowo Subianto', | |
| subtitle = '28 - 29 May 2019', | |
| caption = 'Twitter Crawling 28 - 29 May 2019')+ | |
| xlab('Time of Day')+ | |
| ylab('Total Tweets')+ | |
| ylim(c(0,100))+ | |
| theme_bw()+ | |
| theme(legend.position = 'bottom', | |
| legend.title = element_blank())+ | |
| scale_fill_brewer(palette = 'Dark2') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment