見出し画像

データの視覚化:スプラトゥーン3で人気のブキは?

基礎的な話が続いてしまっても、あまり面白くないので、閑話休題として、スプラトゥーン3で使われているブキを調べた結果をパイチャートで視覚化してみます。***一部の人だけの集計結果なので、全体を反映したものではありません。ご注意ください。***

使用データ

データは、 stat.ink に投稿された試合の結果をありがたく使わせていただきました。誰でもダウンロードできるように公開されています。データの形式は、CSVファイルです。ダウンロードした時点の1月21日までのデータです。データのサイズは、zipを展開した状態で、450MBほどです。

なお、各日にち毎にファイルが分かれているため、cat で連結して1つのファイルにしてから読み込みました。また、コードを書きやすいように、ヘッダーの「ハイフン(-)」を「アンダースコア(_)」に変更してます。そうしないと、列名を毎回「バッククォート(`)」で囲む必要があります。

csv ファイルなので、read_csv() 関数で読み込みます。(read_tsvではなく。)

library(tidyverse)

battle_results <- read_csv("battle_results20220926_20230121.csv")

登録されている試合数は、ナワバリ、バンカラ、フェス、Xマッチを合計して447,455試合でした。このうち、最近の Chill Season のものだけを使いました。

これも以前紹介したfilter()関数で指定するだけです。

chill_season_results <- battle_results %>%
  filter(season == "Chill Season 2022")

このうち、投稿者のデータが A1 らしいので、それを除外します。同じ人が何度も登場することになるためです。データとしては、「投稿者が試合で出会った他のプレイヤーたちの使用ブキ」を集計することになります。

A1はstat.inkの投稿者です。このプレーヤーを含めて統計情報を作成した場合、ブキの使用数などを過大に見積もることになります。

https://github.com/fetus-hina/stat.ink/wiki/Spl3---CSV-Schema---Battle

これも filter()関数でできます。(全員のブキ = *_weapon を選択してから、A1_weapon を除外)

all_weapon <- chill_season_results %>%
  select(ends_with("_weapon"))

weapon_no_a1 <- all_weapon %>% select(-A1_weapon)

全部で、224,636 × 7 = 1,572,452 人分のブキです。

集計結果を視覚化(パイチャート)

先に結果を載せてしまうと、下記の図です。

使用ブキの割合のパイチャート

予想どおりというか、シャープマーカーが一番でしたね。のべ157万人中、12万人近くもいます。意外と、もみじ、わかばが多いです。また、フェス100ケツに多いスクリューが意外と少ないように感じます(上級者に多いだけ?)。なお、最近のアップデート直後なので、まだ、その影響は見えていないようです。(また、ZAPが増えてくると思います。)ルール毎に集計すると、また違うと思われます。

> pie_data
# A tibble: 68 × 3
   weapon            total buki
   <chr>             <dbl> <fct>
 1 sharp            117426 シャープマーカー
 2 momiji           101123 もみじシューター
 3 sshooter_collabo  77007 スプラシューターコラボ
 4 wakaba            66182 わかばシューター
 5 liter4k           60678 リッター4K
 6 sshooter          57281 スプラシューター
 7 52gal             55852 .52ガロン
 8 promodeler_rg     55503 プロモデラーRG
 9 prime_collabo     47810 プライムシューターコラボ
10 screwslosher      46237 スクリュースロッシャー

自分の愛用しているL3リールガンは、こんなに低い使用率だったとは、驚きました。数にして、のべ157万人中の3千人でした。(確かに、数えるくらいしか、他に使っている人に遭遇してません。個人的には使いやすいと思うのですが。。。)

> tail(pie_data)
# A tibble: 6 × 3
  weapon       total buki
  <chr>        <dbl> <fct>
1 soytuber      3764 ソイチューバー
2 l3reelgun     3004 L3リールガン
3 parashelter   2922 パラシェルター
4 rapid_elite   2772 Rブラスターエリート
5 splatspinner  2740 スプラスピナー
6 h3reelgun     2733 H3リールガン

このようにデータは、集計し、視覚化することで、いろいろな気付きが見えてきます。R言語では、数値計算や統計処理ではなく、視覚化の機能が充実していることが大きな利点です。

ちなみに、パイチャート作成部分のコードは下記のようになります。詳細な解説はのちのち行なっていきます。

weapon_data <- weapon_no_a1 %>%
  gather(ends_with("_weapon"), key = "player", value = "weapon") %>%
  mutate("num" = 1) %>% group_by(weapon) %>% summarize("total" = sum(num))

pie_data <- weapon_data %>% arrange(desc(total)) %>%
  inner_join(weapon_list) %>%
  mutate(buki = fct_reorder(buki, total, .desc = TRUE))

pie <- ggplot(pie_data, aes(x = "", y = total, fill = buki)) +
  geom_bar(stat = "identity", size = 0.2, width = 1, color = "white") +
  coord_polar("y", start = 0, direction = -1)

pie + labs(title = "Chill Season 2022-20230121") +
  theme_void() + theme(text = element_text(family = "HiraKakuProN-W3"))

ggsave("weapon_total_chill2022_20230121.png", bg = "white")

ところで、3から新しく始めた人たちは、大アサリ持ったまま味方にジャンプできるの知っているかな?お願いだから、カモンしたら飛んできてくれー。


この記事が気に入ったらサポートをしてみませんか?