library(tidyverse)
library(DT)
library(plotly)
library(lubridate)
library(rvest)
library(magick)
Sys.setlocale('LC_ALL','C') ## [1] "C/C/C/C/C/en_US.UTF-8"
## [1] "You have reviewed 607 movies"
Genres <- data.frame(rating$Genres)
Genres$rating.Genres <- Genres$rating.Genres %>%
str_replace(",", "$")
Genres <- Genres %>%
separate(rating.Genres, sep = "\\$", into = c("genre1", "genre2"))
Genres$genre2 <- Genres$genre2 %>%
str_replace(",", "$")
Genres <- Genres %>%
separate(genre2, sep = "\\$", into = c("genre2", "genre3"))
Genres$genre3 <- Genres$genre3 %>%
str_replace(",", "$")
Genres <- Genres %>%
separate(genre3, sep = "\\$", into = c("genre3", "genre4"))
Genres$genre4 <- Genres$genre4 %>%
str_replace(",", "$")
Genres <- Genres %>%
separate(genre4, sep = "\\$", into = c("genre4", "genre5"))
Genres$genre5 <- Genres$genre5 %>%
str_replace(",", "$")
Genres <- Genres %>%
separate(genre5, sep = "\\$", into = c("genre5", "genre6"))
Genres$genre6 <- Genres$genre6 %>%
str_replace(",", "$")
Genres <- Genres %>%
separate(genre6, sep = "\\$", into = c("genre6", "genre7"))
Genres.tidy <- Genres %>%
gather(key = "No", value = "Genre")
Genres.tidy$Genre = str_remove(Genres.tidy$Genre, " ")## Category Select
genre.option <- Genres.tidy[!duplicated(Genres.tidy$Genre),]$Genre %>%
str_remove(" ")
genre.option <- genre.option[-18]
genre.option <- data.frame(genre.option) %>%
arrange(genre.option)
genre.option <- genre.option[!duplicated(genre.option$genre.option),]
## Date Reviewed
rating$Date.Rated <- as.Date(rating$Date.Rated)
rating <- rating %>%
mutate(Review_YearMonth =
paste0(year(Date.Rated), "-", str_pad(month(Date.Rated), pad = "0", width = 2)))
## Best Movies by year
year.range <- rating[!duplicated(rating$Year), ][,"Year"]
year.range <- data.frame(year.range) %>%
arrange(desc(year.range))
## Reviews of This Month
names(rating)[8] <- "Run_Mins"
## Directors' Columns
director <- data.frame(table(rating$Directors)) %>%
filter(Freq < 15)
names(director) <- c("Directors", "Num")
dr.rating <- merge(rating, director, by.x = "Directors", by.y = "Directors")
dr.rating$Directors <- as.character(dr.rating$Directors) %>%
str_replace("\xf4", "o")plot_ly(as.data.frame(table(Genres.tidy$Genre))[-1,],
labels = ~Var1, values = ~Freq, type = 'pie',
textposition = "inside") %>%
layout(title = 'Movie Genres',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>%
hide_legend()plot_ly(data = rating,
x = ~IMDb.Rating, y = ~Your.Rating,
hoverinfo = "text",
text = ~paste0("Title: ", Title,
"<br>Director: ", Directors,
"<br>IMDb Rating: ", IMDb.Rating,
"<br>Your Rating: ", Your.Rating))## No trace type specified:
## Based on info supplied, a 'scatter' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#scatter
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
this_month_reviews_viz = rating %>%
filter(Review_YearMonth == max(rating$Review_YearMonth)) %>%
ggplot(aes(x = Date.Rated, y = Run_Mins, group = Title,
fill = Your.Rating)) +
geom_bar(aes(text = paste0("Date Reviewed: ", Date.Rated,
"<br>Title: ", Title, " (", Year, ")",
"<br>Your Rating: ", Your.Rating,
"<br>Run Minutes: ", Run_Mins, " Minutes")),
stat = "identity", colour = "grey") +
theme_minimal() +
labs(fill = "Rating", y = "Minutes")## Warning: Ignoring unknown aesthetics: text
## Warning: Removed 1 rows containing missing values (position_stack).
director_ranking = dr.rating %>%
filter(Num >= 4) %>%
ggplot(aes(x = reorder(Directors, Num), y = Num/Num, group = Title,
fill = Your.Rating,
text = paste0("Director: ", Directors,
"<br>Total Movies Reviewed: ", Num,
"<br>Title: ", Title, " (", Year, ")",
"<br>Rating Score: ", Your.Rating))) +
geom_bar(stat = "identity"
# , fill = "#4F6CFF"
) +
coord_flip() +
theme_minimal() +
labs(fill = "Rating", x = "", y = "Count")
ggplotly(
director_ranking,
tooltip="text"
)rating_histogram = rating %>%
group_by(Your.Rating) %>%
mutate(Rating.Count = sum(Your.Rating)/Your.Rating) %>%
ggplot(aes(Your.Rating)) +
geom_histogram(aes(text = paste0(
"Rating Score: ", Your.Rating,
"<br>Movie Count: ", Rating.Count
)),
binwidth = 1, fill = "#4F6CFF") +
theme_minimal()## Warning: Ignoring unknown aesthetics: text