![見出し画像](https://assets.st-note.com/production/uploads/images/96621161/rectangle_large_type_2_61214c0b51bd70c424ca26f58dd410f2.png?width=1200)
スプラトゥーン3のブキの使用数をルール毎に集計
以前、集計した結果は、ナワバリもバンカラも区別せずに集計した結果でした。今回は、ナワバリ、エリア、アサリ、ホコ、ヤグラのルール毎に集計した結果です。結果を比較する場合にはパイチャートは不向きかもしれませんが、コードの記述例として紹介します。
以前と同様に投稿者は除外しています。 Chill season の開始時から集計時(1月21日)までの結果です。
***一部のプレイヤーのデータを集計した結果です。全体の結果ではないことにご注意ください。(限られた投稿者によるバイアスを含んでいるはずです。)***
ナワバリで使用されたブキ
![](https://assets.st-note.com/img/1674821901479-a2DMZJpTsU.png?width=1200)
シャープマーカーではなく、プロモデラーRGが1番多く使われていました。塗りが強い上に、ナイスダマも使えて人気なのでしょう。全体の結果からすると、ZAPは上位にきています。ハイドラントは少し落ちてます。(L3, H3 リールガンは少ないですね。かなり塗れるブキなのですが。。。)
エリアで使用されたブキ
![](https://assets.st-note.com/img/1674821934842-srp3lwt2kQ.png?width=1200)
シャープマーカーなどの上位は相変わらずです。エクスプロッシャーが上位に来ているのは、やはりエリアに向いているのでしょう。1人でエリア確保できてしまいますし。
アサリで使用されたブキ
![](https://assets.st-note.com/img/1674821946968-Fn4EGVPLXb.png?width=1200)
これも上位は同じです。やはりというか、パブロが上位になりました。ボトルガイザーが比較的、上にきているようです。L3少し増えた?
ホコで使用されたブキ
![](https://assets.st-note.com/img/1674821954074-UJ43LLK926.png?width=1200)
これも大体の傾向は同じですが、ロングブラスターの頻度が増えるようです。リールガンは。。。
ヤグラで使用されたブキ
![](https://assets.st-note.com/img/1674821963779-10rHl7BL5i.png?width=1200)
ロングブラスター、クラッシュブラスターは、ヤグラで好まれるようです。確かに、ヤグラにパンパンしてる印象ありますね。トライストリンガーも上位にきてます。ポイズンとメガホンレーザーでヤグラを止めやすそうです。(L3でヤグラに乗るのは正気の沙汰ではないのでしょうか。。。)
どうでしょう?想像どおりの結果だったでしょうか?なんとなく、ルール毎に得意なブキが上位になる傾向はあるようです。投稿者のレベルが高すぎて、本当のプレイヤー人口とは傾向が異なっている可能性もあるかもしれません。(そもそも、ネットに結果をアップロードするだけのスキルを持つ人が投稿者なので。小学生では難しいでしょうし。)投稿者の傾向についても調査してみたいと思います。
今回のコード
下記に、今回のパイチャートを作成したコード全体を貼っておきます。これまでより少し長いコードになっています。前半(4行目から33行目)は、自作の関数を定義している部分です。
プログラムでは、何度も似たような記述を繰り返さないで済むよう、短い記述をまとめて、新たな1つの関数として定義することができます。ここでは、select_weapon_data と、create_weapon_pie_chart という2つの関数を定義しています。
実際の処理は、37行目からです。データを読み込み、まず、Chill Season のデータだけを抽出しています。54行目から、ルール毎に、前述の2つの関数を適用することで、それぞれのパイチャートを出力しています。
select_weapon_data という関数は、「シーズン毎の結果をフィルタリングして、指定したルールだけの結果にして、各ブキごとに集計する」ものです。前回までに紹介した select, filter, gather, mutate, group_by, summarize の関数で書かれています。
select_weapon_data <- function(season_results, rule){
all_weapon <- chill_season_results %>%
filter(mode == rule) %>%
select(ends_with("_weapon"))
weapon_data <- all_weapon %>% select(-A1_weapon) %>%
gather(ends_with("_weapon"), key = "player", value = "weapon") %>%
mutate("num" = 1) %>% group_by(weapon) %>% summarize("total" = sum(num))
return(weapon_data)
}
create_weapon_pie_chart 関数が、パイチャートを作成する部分をまとめた関数です。引数として、上記の関数で集計した weapon_data と、出力する画像ファイルの名前として、title_text を受け取ります。こちらの関数の詳細は、後日紹介します。
create_weapon_pie_chart <- function(weapon_data, title_text){
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 = title_text) +
theme_void() + theme(text = element_text(family = "HiraKakuProN-W3"))
safe_name <- title_text %>%
str_replace_all(" ", "_") %>% str_replace_all("-", "_")
pie_file <- paste("weapon_total_", safe_name, ".png", sep = "")
ggsave(pie_file, bg = "white", width = 13, height = 5.42, unit = "in")
}
なお、38行目で読み込んでいる weapon_list.txt は、ブキの id (=weapon) と、その日本語名 (=buki) の2列からなるタブ区切りテキストです。パイチャートに日本語名を表示するために使用してます。