データの比較や傾向を視覚的に示すために、積み上げ棒グラフは非常に有効なツールです。特に、全体に占める各部分の割合を示したい場合、100%積み上げ棒グラフが役立ちます。この記事では、R言語を使用して100%積み上げ棒グラフを作成する方法をステップバイステップで解説します。
具体的にはエクセルファイルのデータをRで読み込んで、100%積み上げ棒グラフを作成する方法を解説していきます。
必要なパッケージの準備
まず、ggplot2パッケージを使用します。これはRでグラフを描画するための非常に人気のあるパッケージです。まだインストールしていない場合は、以下のコマンドをRコンソールに入力してインストールしておいてください。
install.packages("ggplot2") #インストールしていない場合はインストールしてください。
library(ggplot2)
エクセルデータをRで読み込んでデータフレームにする
以下のような、日本の産業別実質GDPの推移のエクセルデータを用意しました。過去の記事と同じデータなので、途中までの操作は同じですが、改めて手順を説明していきます。
Rで読み込んでいくのは次のグラフの青色のセルのみ読み込んでいきます。詳しくは以前のブログ記事も参考にしてください。
![data](https://rdatascience.com/wp-content/uploads/2023/12/01.jpg)
青色のセルを読み込むスクリプトは次のとおりです。
library(readxl)
# Excelファイルのパス(ご自身のファイル名と場所に書き換えてください)
file_path <- "F:/ブログ用/17R/関数辞典/04 read_excel/GDP.xlsx"
# read_excel関数のオプションを設定してデータフレームを読み込む
df <- read_excel(
path = file_path,
sheet = "Sheet3", # シート名
range = "A2:I22", # 読み込む範囲
col_types = c("text", rep("numeric",8)), # 列のデータ型を指定
na = "NA", # 欠損値として扱う文字列
skip = 1, # 最初の1行をスキップ
n_max = 50 # 読み込む最大行数
)
データフレーム(df)の確認
先ほどRで作成したデータフレームdfを開いてきちんと読み込めているか確認してみましょう。
上のスクリプトを実行するとR-Studioの右上のコンソールにdfというファイルが現れますので、dfをクリックしてみてください。
![](https://rdatascience.com/wp-content/uploads/2024/01/image-10-1024x344.webp)
クリックすると左側にdfの内容が次のように表示されます。
![](https://rdatascience.com/wp-content/uploads/2023/12/03-1024x579.jpg)
もとのエクセルファイルのデータと同じものが出ているので、きちんとRで読み込めているのが確認できました。
100%積み上げ棒グラフの作成
以下のコードを使用して100%積み上げ棒グラフを作成します。
既にExcelファイルからデータフレーム(df)を読み込んでいるので、ここから各年度ごとに2列目から9列目のデータを積み上げた棒グラフを作成するスクリプトを書きます。以下にスクリプトを示します。
install.packages("tidyr") #インストールされていない人は入れてください
library(tidyr)
# データを長い形式に変換
df_long <- gather(df, key = "Year", value = "Value", -year)
# 積み上げ棒グラフの作成
ggplot(df_long, aes(x = year, y = Value, fill = Year)) +
geom_bar(stat = "identity", position = "fill") +
theme_minimal() +
labs(x = "年", y = "値", fill = "カテゴリー") +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 12, family = "Helvetica", face = "bold"), # X軸のラベルと数値のフォント
axis.title.x = element_text(size = 12, family = "Helvetica", face = "bold"), # X軸タイトルのフォントサイズ
axis.title.y = element_text(size = 12, family = "Helvetica", face = "bold"), # Y軸タイトルのフォントサイズ
axis.text.y = element_text(size = 12, family = "Helvetica", face = "bold") # Y軸数値のフォント
)
ここまでのスクリプトを実行すると次のようなグラフが作成されます。
![](https://rdatascience.com/wp-content/uploads/2024/01/image-11.webp)
スクリプトの意味を解説
gather()
関数は、tidyr
パッケージの関数で、広い形式のデータフレームを長い形式に変換します。長い形式に変換する意味については最初に挙げた過去のブログ記事(Rで積み上げ棒グラフを作成する方法)の中で解説しています。- この行では、
df
というデータフレームを長い形式に変換しています。key = "Year"
とvalue = "Value"
は、新しく作成される列の名前を指定しています。-year
は、year
列をそのまま保持し、他の列を変形させることを意味します。 - この操作により、積み上げ棒グラフを作成するための準備が整います。
ggplot(df_long, aes(x = year, y = Value, fill = Year))
: ggplot2パッケージを使用してグラフを作成します。aes()
はエステティックマッピングを指定し、x軸にyear
、y軸にValue
、そして棒の色をYear
の値に基づいて変えることを指定しています。geom_bar(stat = "identity", position = "fill")
: 積み上げ棒グラフを作成します。stat = "identity"
は、y値がデータに含まれていることを意味し、position = "fill"
は棒の高さを100%に調整して積み上げることを意味します。theme_minimal()
: グラフのテーマをミニマルに設定し、余計な装飾を省きます。labs(x = "年", y = "値", fill = "カテゴリー")
: 軸ラベルと凡例のタイトルを設定します。theme(...)
: グラフの細かいスタイル設定を行います。ここでは、軸のテキスト、タイトルのフォントサイズ、フォントファミリー、太字設定などをカスタマイズしています。