🌟
[R] ggupset で 集計済みのデータを利用して可視化する方法
ggupset packageを使って、映画のジャンルを可視化する
ggupset packageは、upset plotというグラフを描画するためのパッケージです。upset plotは、複数の集合の共通項目を可視化するためのグラフであり、データ分析において役立ちます。
ここでは、映画のデータを用いて、ggupset packageを使ったupset plotの描画方法を紹介します。
- データの準備
まずは、映画のデータを準備します。ここでは、tidy_moviesというデータフレームを使用します。
library(tidyverse)
tidy_movies <- read.csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-06-22/tidy_movies.csv")
tidy_movies %>%
head()
tidy_moviesには、映画のタイトル、ジャンル、制作年、上映時間などの情報が含まれています。
- データの前処理
次に、データの前処理を行います。ここでは、ジャンルごとの映画の数を集計し、上位20件を抽出することを目的とします。
tidy_movies_agg <- tidy_movies %>%
distinct(title, year, length, .keep_all=TRUE) %>%
group_by(Genres) %>%
summarise(count=n()) %>%
arrange(desc(count)) %>%
top_n(n=20, wt=count)
tidy_movies_agg %>%
head()
tidy_movies_aggには、ジャンルごとの映画の数が含まれています。ここでは、上位20件のデータを抽出し、先頭5件を表示しています。
- グラフの描画
最後に、upset plotを描画します。ここでは、ggplot2パッケージとggupsetパッケージを使用します。
tidy_movies_agg <- tidy_movies_agg %>%
mutate(Genres_str = sapply(Genres, function(x) paste0(sort(x), collapse="-"))) %>%
mutate(Genres_fct = factor(Genres_str))
tidy_movies_agg %>%
ggplot(aes(x=reorder(Genres_fct, -count),y=count)) +
geom_bar(stat = "identity") +
axis_combmatrix(sep = "-",
levels = c("Drama", "Comedy", "Short",
"Documentary", "Action", "Romance", "Animation", "Other"))
ここでは、tidy_movies_aggに含まれるGenres列を、文字列として連結したGenres_str列を新たに作成し、その列をfactorとして扱えるようにしたGenres_fct列を作成しています。その後、ggplot2のreorder関数を用いて、ジャンルごとの映画の数を降順に並べ替え、upset plotを描画しています。
また、axis_combmatrix関数を用いて、ジャンルごとの映画の数を表示する軸のラベルを作成しています。ここでは、"Drama", "Comedy", "Short", "Documentary", "Action", "Romance", "Animation", "Other"の8つのジャンルを設定しています。
以上で、ggupsetパッケージを使ったupset plotの描画方法を紹介しました。ggupsetパッケージは、集合の共通項目を可視化するための有用なパッケージであり、データ分析において活用することができます。
Discussion