Freq_BarChart

Author

kubota

度数分布表から棒グラフの描画

必要なパッケージを読み込むためのセットアップ

library(readxl)
library(dplyr)
library(knitr)
library(ggplot2) #グラフ描画用

Excelファイルの読み込み

# ExcelファイルのURL
file_url <- "https://takafumikubota.jp/ds1/DS1data2024.xlsx"

# ローカルにダウンロードするための一時ファイルパスを生成
temp_file <- tempfile(fileext = ".xlsx")

# ファイルをダウンロード
download.file(file_url, temp_file, mode = "wb")

# 'party'タブを読み込み
data <- read_excel(temp_file, sheet = "party", col_types = c("text"))

# 一時ファイルを削除
unlink(temp_file)

度数分布の計算と整形

# 度数分布の計算
frequency_distribution <- data %>%
  group_by(支持政党) %>%
  summarise(度数 = n()) %>%
  mutate(カテゴリー = case_when(
    支持政党 %in% c("その他", "支持なし", "わからない・無回答") ~ "最後に移動",
    TRUE ~ "その他"
  )) %>%
  arrange(カテゴリー, desc(度数)) %>%
  select(-カテゴリー) %>%
  rbind(summarise(., 支持政党 = "合計", 度数 = sum(度数)))

並べ替え

# 特定のカテゴリーを除外して度数が大きい順に政党を並べ、その順序でfactorを再定義
# 「その他」「支持なし」「わからない・無回答」はこの時点では含めない
ordered_parties <- frequency_distribution %>%
  filter(支持政党 != "その他", 支持政党 != "支持なし", 支持政党 != "わからない・無回答") %>%
  arrange(desc(度数)) %>%
  pull(支持政党)

# factorのレベルを上で定義した順序に設定し直し、特定のカテゴリーは最後に追加
frequency_distribution$支持政党 <- factor(frequency_distribution$支持政党, levels = c(ordered_parties, "その他", "支持なし", "わからない・無回答"))

棒グラフを描画

# 合計行を除外
frequency_distribution_filtered <- frequency_distribution %>%
  filter(支持政党 != "合計")

# 棒グラフを描画
ggplot(frequency_distribution_filtered, aes(x = 支持政党, y = 度数, fill = 支持政党)) +
  geom_bar(stat = "identity") + # 度数を元に棒グラフを描画
  theme_minimal() + # テーマを設定
  labs(title = "政党支持者数", x = "政党", y = "支持者数") + # タイトルと軸ラベルを設定
  theme(axis.text.x = element_text(angle = 45, hjust = 1, family = "Hiragino Sans"),
        axis.title = element_text(family = "Hiragino Sans"),
        plot.title = element_text(family = "Hiragino Sans", face = "bold"),
        legend.text = element_text(family = "Hiragino Sans", size = 12), # 凡例のテキストのフォントとサイズを設定
        legend.title = element_text(family = "Hiragino Sans", face = "bold", size = 14)) + # 凡例のタイトルのフォント、スタイル、サイズを設定
  scale_fill_brewer(palette = "Set3") # 色のパレットを設定