見出し画像

スプラトゥーン3のブキの使用数をルール毎に集計

以前、集計した結果は、ナワバリもバンカラも区別せずに集計した結果でした。今回は、ナワバリ、エリア、アサリ、ホコ、ヤグラのルール毎に集計した結果です。結果を比較する場合にはパイチャートは不向きかもしれませんが、コードの記述例として紹介します。

以前と同様に投稿者は除外しています。 Chill season の開始時から集計時(1月21日)までの結果です。

***一部のプレイヤーのデータを集計した結果です。全体の結果ではないことにご注意ください。(限られた投稿者によるバイアスを含んでいるはずです。)***

ナワバリで使用されたブキ

ナワバリで使用されたブキのパイチャート

シャープマーカーではなく、プロモデラーRGが1番多く使われていました。塗りが強い上に、ナイスダマも使えて人気なのでしょう。全体の結果からすると、ZAPは上位にきています。ハイドラントは少し落ちてます。(L3, H3 リールガンは少ないですね。かなり塗れるブキなのですが。。。)

エリアで使用されたブキ

エリアで使用されたブキのパイチャート

シャープマーカーなどの上位は相変わらずです。エクスプロッシャーが上位に来ているのは、やはりエリアに向いているのでしょう。1人でエリア確保できてしまいますし。

アサリで使用されたブキ

アサリで使用されたブキのパイチャート

これも上位は同じです。やはりというか、パブロが上位になりました。ボトルガイザーが比較的、上にきているようです。L3少し増えた?

ホコで使用されたブキ

ホコで使用されたブキのパイチャート

これも大体の傾向は同じですが、ロングブラスターの頻度が増えるようです。リールガンは。。。

ヤグラで使用されたブキ

ヤグラで使用されたブキのパイチャート

ロングブラスター、クラッシュブラスターは、ヤグラで好まれるようです。確かに、ヤグラにパンパンしてる印象ありますね。トライストリンガーも上位にきてます。ポイズンとメガホンレーザーでヤグラを止めやすそうです。(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列からなるタブ区切りテキストです。パイチャートに日本語名を表示するために使用してます。


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