R言語

データ可視化

知りたいことに合うグラフを選び、軸・単位・出所を明示して保存します。

01

目的からグラフを選ぶ

知りたいこと候補
値の分布ヒストグラム、箱ひげ図
分類間の比較棒グラフ
2変数の関係散布図
時間による変化折れ線グラフ

グラフを作る前に、何を比較し、単位は何で、1行が何を表すか確認します。

02

分布を見る

ヒストグラムは値を区間に分けて件数を示します。区間数で印象が変わるため複数の設定を試します。

点数の分布R
scores <- c(52, 60, 63, 68, 72, 74, 78, 81, 85, 92)
hist(scores, breaks = 5, main = "点数の分布", xlab = "点数", col = "skyblue")

実行すると点数区間ごとの人数を示すヒストグラムが表示されます。

03

分類を比較する

棒グラフの高さは0を基準にすると差を誤解しにくくなります。

商品別売上R
amounts <- c(りんご = 600, みかん = 400, ぶどう = 1200)
barplot(amounts, main = "商品別売上", ylab = "円", col = "steelblue", ylim = c(0, 1400))
04

2つの量の関係を見る

散布図で関係が見えても因果関係が証明されたわけではありません。外れ値や第三の要因も考えます。

車重と燃費R
plot(mtcars$wt, mtcars$mpg, pch = 19, col = "navy",
  xlab = "車重(1000ポンド)", ylab = "燃費(mpg)")
cor(mtcars$wt, mtcars$mpg)
相関係数OUTPUT
[1] -0.8676594
05

時間による変化を見る

日付順へ並べてから線で結びます。観測間隔が不規則な場合は点も表示します。

1週間のアクセス数R
days <- as.Date("2026-08-01") + 0:6
views <- c(120, 135, 128, 160, 172, 168, 190)
plot(days, views, type = "o", xlab = "日付", ylab = "閲覧数", main = "閲覧数の推移")
06

ggplot2で層を重ねる

データと列の対応をaes()へ指定し、点や線などの層を追加します。

色分けした散布図R
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
  geom_point(size = 2, alpha = 0.8) +
  labs(title = "がく片と花弁の長さ", x = "がく片の長さ", y = "花弁の長さ", color = "種") +
  theme_minimal()

実行すると3種類のアヤメを色分けした散布図が表示されます。

07

グラフを保存する

基本グラフは描画デバイスを開き、必ずdev.off()で閉じます。

PNGへ保存R
png("scatter.png", width = 1200, height = 800, res = 150)
plot(mtcars$wt, mtcars$mpg, xlab = "車重", ylab = "燃費", pch = 19)
dev.off()
ggplot2の保存R
p <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point()
ggsave("iris.png", plot = p, width = 8, height = 5, units = "in", dpi = 150)
08

誤解を招かないために

確認項目
  • タイトル、軸名、単位、期間、出所を示す
  • 3D表現や過度な装飾を避ける
  • 都合のよい範囲だけ切り取らない
  • 色だけに頼らず形やラベルも使う
  • 個人が特定される少数データを公開しない
PRACTICE

ミニ課題:目的に合うグラフを選んで保存する

組み込みデータmtcarsを使い、気筒数cylごとの平均燃費mpgを比較してください。比較に適したグラフを選び、タイトル・軸名・単位を付けてPNG形式で保存します。

完成条件
  • aggregate()で気筒数ごとの平均燃費を求める
  • 分類間の比較に適したグラフを選ぶ
  • 縦軸を0から始める
  • cylinders_mpg.pngへ保存する
  • なぜそのグラフを選んだか説明する
解答例R
average_mpg <- aggregate(mpg ~ cyl, data = mtcars, FUN = mean)
png("cylinders_mpg.png", width = 1200, height = 800, res = 150)
barplot(
  average_mpg$mpg,
  names.arg = average_mpg$cyl,
  ylim = c(0, max(average_mpg$mpg) * 1.2),
  main = "気筒数ごとの平均燃費",
  xlab = "気筒数",
  ylab = "平均燃費(mpg)",
  col = "steelblue"
)
dev.off()

気筒数という分類ごとの代表値を比較するため、棒グラフを選んでいます。実行すると作業ディレクトリにcylinders_mpg.pngが作成されます。