ggplot2 多軸グラフを実装する - secondary y-axis 適用法
複数の変数を1つのグラフで比較したいですか? 2つ以上のデータがある場合、ggplot2の多軸機能を使用すると、一目で見やすく視覚化することができます。
ggplot2パッケージから secondary y-axisを追加してデータを様々な視点で分析できる方法今日は、初心者でも簡単にできるように、各ステップを詳しく説明します。
ggplot2で多軸が必要な理由は?
データ分析から 異なる単位を使用する2つの変数を比較します。例えば、温度と降水量のように性格の異なるデータを一つのグラフに表示したいとき、ggplot2多軸を使うと便利です。
1.基本的な折れ線グラフの描画
まず、2つのデータを含む基本的な折れ線グラフを描いてみましょう。
# ライブラリの読み込み
library(ggplot2)
#のデータ生成例
data <- data.frame(
month = 1:12、
temperature = c(2, 3, 5, 9, 14, 18, 21, 20, 15, 10, 5, 3)、
rainfall = c(30, 40, 45, 55, 60, 75, 80, 70, 50, 45, 45, 35, 30)
)
# 基本折れ線グラフ生成
p <- ggplot(data, aes(x = month)) + + p <- ggplot(data, aes(x = month))
geom_line(aes(aes(y = temperature, color = "Temperature")) +
geom_line(aes(aes(y = rainfall, color = "Rainfall")) +
labs(title = "月別気温と降雨量", x = "月", y = "気温")
pコードの説明:
- aes(x = month):x軸に月を設定します。
- geom_line(aes(y = temperature, color = "Temperature")):温度データを折れ線グラフで描き、色を指定します。
- geom_line(aes(y = rainfall, color = "Rainfall")):降水量データを別途追加します。

2. secondary y-axis を追加する
さあ 二次Y軸を追加して降水量(y軸)を別の軸で表示してみます。
# ライブラリの読み込み
library(ggplot2)
#のデータ生成例
data <- data.frame(
month = 1:12、
temperature = c(2, 3, 5, 9, 14, 18, 21, 20, 15, 10, 5, 3)、
rainfall = c(30, 40, 45, 55, 60, 75, 80, 70, 50, 45, 45, 35, 30)
)
# 多軸適用
p <- ggplot(data, aes(x = month)) + + p <- ggplot(data, aes(x = month))
geom_line(aes(y = temperature, color = "温度")) + + geom_line(aes(y = temperature, color = "Temperature"))
geom_line(aes(aes(y = rainfall/10, color = "Rainfall")) + + ggplot(data, aes(y = rainfall/10, color = "Rainfall"))
scale_y_continuous(name = "気温", sec.axis = sec_axis(~.*10, name = "降水量")) +
labs(title = "月別気温と降水量", x = "月") +
scale_color_manual(values = c("気温" = "青", "降水量" = "緑"))
pコードの説明:
- geom_line(aes(y = rainfall/10, color = "Rainfall")):降水量データを10で割って温度と似た範囲に変換します。
- scale_y_continuous(name = "Temperature"", sec.axis = sec_axis(~.*10, name = "Rainfall")): y軸を2つに分けて、右軸に降水量を表示します。 左軸は温度、右軸は降水量を表します。
- scale_color_manual(values = c("Temperature" = "Temperature", "Rainfall" = "green")):温度と降水量の色をそれぞれ青と緑で指定し、読みやすさを高めます。

3.追加例 - 洗練されたggplot2多軸グラフ
今回の例では、降水量をバーで、温度を線で表現し、2つの変数の関係を効果的に示しています。色のコントラストとレイアウトの改善により、データのパターンを簡単に把握することができ、プロフェッショナルで洗練されたデザインで視覚的な魅力を高めています。
# ライブラリの読み込み
library(ggplot2)
library(scales)
#のデータ生成例
data <- data.frame(
month = 1:12、
temperature = c(2, 3, 5, 9, 14, 18, 21, 20, 15, 10, 5, 3)、
rainfall = c(30, 40, 45, 55, 60, 75, 80, 70, 50, 45, 45, 35, 30)
)
# 強化された多軸グラフの生成
p <- ggplot(data, aes(x = month)) + p <- ggplot(data, aes(x = month))
geom_col(aes(y = rainfall, fill = "Rainfall"), alpha = 0.5) + + geom_line(aes(y = rainfall))
geom_line(aes(aes(y = 温度 * 4, color = "温度"), size = 1.2) + geom_line(aes(y = 温度 * 4, color = "温度"))
geom_point(aes(aes(y = temperature * 4, color = "Temperature"), size = 3) + geom_point(aes(y = temperature * 4, color = "Temperature"), size = 1.2)
scale_y_continuous(
name = "降水量(mm)"、
sec.axis = sec_axis(~./4, name = "Temperature (°C)")
) + scale_y_continuous(
scale_x_continuous(breaks = 1:12, labels = month.abb) +
scale_fill_manual(values = c("Rainfall" = "#69b3a2")) +
scale_color_manual(values = c("温度" = "#E69F00")) +
labs(
title = "月ごとの気温と降水量"、
subtitle = "一年を通しての気候パターンを紹介"、
x = "月"、
color = ""、
fill = ""
theme_minimal() +.
theme(
legend.position = "top"、
plot.title = element_text(hjust = 0.5, face = "bold", size = 16)、
plot.subtitle = element_text(hjust = 0.5, size = 12, color = "gray50")、
axis.title = element_text(face = "bold")、
panel.grid.major = element_line(color = "gray90")、
panel.grid.minor = element_blank()
)
pコードの説明:
geom_col(): 降水量を棒グラフで表現します。alpha = 0.5で透明度を調整しました。geom_line()およびgeom_point(): 温度を折れ線グラフと点線で表現します。温度値に4を掛け、降水量と同じようなスケールに調整しました。scale_y_continuous()主Y軸は降水量、副Y軸は温度を表します。sec.axis = sec_axis(~./4, name = "Temperature (°C)")で補助軸を設定しました。scale_x_continuous():x軸のラベルを月の略称で表示します。scale_fill_manual()およびscale_color_manual(): 降水量と温度にそれぞれ異なる色を指定します。labs(): グラフのタイトル、副題、軸ラベルを設定します。theme_minimal(): 綺麗な基本テーマを適用します。テーマ():グラフの細かいスタイルを調整します。凡例の位置、タイトルスタイル、グリッドラインなどをカスタマイズしました。

まとめ: ggplot2 多軸でデータ比較が一目瞭然!
ggplot2多軸を使用すると、異なる単位のデータを一つのグラフで視覚化して比較することができます。 secondary y-axisを活用すると、複雑なデータをより簡単に解釈することができ、分析に大きな助けになります。
皆さんも様々なデータを一つのグラフで表現してみてください。次の記事では ggplot2の高度なテーマ設定方法を紹介します。する予定ですのでお楽しみに!




