Wczytanie bazy danych oraz bibliotek
movie <- read.csv("Movie-Ratings.csv")
library(tidyverse) # będę używał dplyr‚ tidyr oraz ggplot2
library(gridExtra) # będę chciał pokazać wykresy obok siebie
Zmiana nazw zmiennych na krótsze i bardziej intuicyjne
colnames(movie)
## [1] "Film" "Genre"
## [3] "Rotten.Tomatoes.Ratings.." "Audience.Ratings.."
## [5] "Budget..million..." "Year.of.release"
colnames(movie) <- c("Film", "Genre", "CriticR", "AudienceR", "Budget", "Year")
1.1 W ramach bazy danych tworzę zmienną DifferenceR, zawierającą różnicę w ocenach:
movie <- mutate(movie, DifferenceR = CriticR - AudienceR)
1.2 Wykres szczegółowy w podziale na gatunki:
detail <- ggplot(data=movie, aes(x=Budget, y=DifferenceR, col=Genre)) +
geom_point() +
geom_smooth(col="blue", method="lm", se=FALSE) +
facet_grid(. ~ Genre) +
labs(x = "Budżet", y = "Różnica w ocenach między krytykami a publicznością") +
guides(color="none")
(komentarz odnośnie ostatniej funkcji guides() - usunąłem legendę, ponieważ połączony wykres ma korzystać tylko z legendy “prawego” wykresu)
1.3 Wykres ogólny w podziale na gatunki:
all <- ggplot(data=movie, aes(x=Budget, y=DifferenceR, col=Genre)) +
geom_point() +
geom_smooth(col="blue", method="lm", se=FALSE) +
labs(x = "Budżet", y = "")
(komentarz odnośnie ostatniej funkcji labs() - usunąłem podpis osi Y, ponieważ zgodnie ze wzorem, połączny wykres ma korzystać tylko z podpisu osi Y z “lewego” wykresu)
1.4 Połączenie wykresów:
grid.arrange(detail, all, nrow=1, ncol=2)
interpretacja:
[wykres z prawej]
Niezależnie od gatunku filmowego - im wyższy budżet danego filmu, tym większa różnica w ocenach (pomiędzy krytykami a publicznością).
[wykresy z lewej]
Gatunki akcji oraz przygodowe są namniej czułe na te zmiany, w pozostałych różnica zwiększa się znacząco.
2.1 Tworzę nową bazę z wybranymi kolumnami - tylko tymi, które mają być w ostatecznym wykresie. Następnie zmieniam układ tej bazy w taki sposób, aby powstała zmienna nominalna Rater (czyja ocena - czy krytyków czy publiczności) oraz liczbowa Rating (wysokość oceny):
movie2 <- movie %>%
select(CriticR, AudienceR, Year) %>%
gather("Rater", "Rating", -Year)
2.2 Modyfikuję typ zmiennych na czynniki, dzięki czemu mapowanie po osi X będzie w dwóch kolumach, a mapowanie po kolorze nie będzie w formie liniowego gradientu tylko osobnych kolorów:
movie2$Rater <- factor(movie2$Rater)
movie2$Year <- factor(movie2$Year)
2.3 Ostateczny wykres, w którym nieco wygasiłem punkty, aby cały wykres był mniej “krzykliwy”:
ggplot(data=movie2, aes(x=Rater, y=Rating, col=Year)) +
geom_jitter(alpha=0.75) +
geom_boxplot(alpha=0.5)
interpretacja:
Zestawienie ocen publiczności i krytyków bardzo ładnie przedstawia ogólną zgodność w tym, czy dany rok był lepszy czy gorszy pod względem ocen filmów. Mediana ocen w obu grupach w każdym roku spada od 2007 do 2009, a następnie rośnie w latach 2010 - 2011. Ponadto, wykres bardzo dobrze pokazuje dużo większy zakres ocen przyznawanych przez krytyków - są one rozciągnięte praktycznie na całej skali ocen 0-100. Oceny publiczności bardzo rzadko schodzą poniżej 25/100.
Autor: Patryk Barkowski