『データ可視化学入門』をRで書く 2.2 大きさを比較する

2.2 大きさを比較する

この記事はR言語 Advent Calendar 2023 シリーズ2の5日目の記事です。
qiita.com

2.2.1 棒グラフの例

##### 2.2.1 #####
library(tidyverse)
library(patchwork)

#データの定義
week <- c("月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜")
data <- data.frame(
  week = factor(week, levels = week),
  sales = c(30, 25, 35, 28, 22, 34, 35),
  card_member = c(20, 13, 20, 14, 14, 20, 25),
  non_member = c(10, 12, 15, 14, 8, 14, 10)
)

#基本的な棒グラフの作成
p1 <- data |>
  ggplot(aes(x = week, y = sales)) + 
  geom_col(fill = "blue") + 
  theme(axis.title.x = element_blank(), legend.position = "none") +
  labs(title = "基本的な棒グラフ",  x= "", y = "売上 [万円]")

#積み上げ棒グラフの作成
data_long <- data |>
  select(!sales) |>
  pivot_longer(!week, names_to = "membership", values_to = "sales")

p2 <- data_long |>
  ggplot(aes(x=week, y=sales, fill=membership)) +
  geom_col(position = "stack") + 
  theme(
    axis.title.x = element_blank(),
    legend.position = "none"
    ) +
  labs(y = "売上 [万円]", title = "積み上げ棒グラフ")

#水平棒グラフの作成
p3 <- data_long |>
  ggplot(aes(x=week, y=sales, fill=membership)) +
  geom_col(position = "dodge") + 
  coord_flip() + 
  theme(legend.title = element_blank()) +
  labs(y = "売上 [万円]", x = "", title = "水平棒グラフ/集団棒グラフ") +
  scale_fill_hue(name = "カード会員", labels = c(card_member = "会員", non_member ="非会員") )

#プロットの並べ方設定
(p1 + p2) / p3
2.2.1

2.2.2 折れ線グラフの例

##### 2.2.2 #####
library(tidyverse)
library(patchwork)

# データの生成
set.seed(0)
week <- c("月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日")
df <- data.frame(
  曜日 = factor(week, levels = week),
  Aさん = rnorm(7, 36, 0.2),
  Bさん = rnorm(7, 36, 0.2)
  ) |>
  pivot_longer(!曜日) |>
  ggplot(aes(x=曜日, y = value, group = name, color = name, linetype = name, shape = name)) + 
  geom_line() +
  geom_point() + 
  theme(
    legend.title = element_blank()
    ) +
    labs(y = "体温[℃]", title="折れ線グラフ") + 
  theme(aspect.ratio = 1/2)
2.2.2

2.2.3 見やすさのための折れ線

##### 2.2.3 #####
library(tidyverse)
library(patchwork)

# データの生成
set.seed(0) # 乱数のシードを設定(再現性のため)
people <- LETTERS[1:7] # 人のリスト
df <- data.frame(= c(people, people),
  temp = rnorm(14, mean = 36.0, sd = 0.2),
  time_of_day = c(rep("夕方", 7), rep("早朝", 7))
  )

# マーカーのみの折れ線グラフをプロット
p1 <- df |>
  ggplot(aes(x =, y = temp, group = time_of_day, shape = time_of_day, color = time_of_day)) +
  geom_point() +
  labs(
    title = "マーカーのみプロット",
    x = "",
    y = "体温 [℃]"
    ) +
  theme(
    aspect.ratio = 1,
    legend.title = element_blank()
    )

p2 <- p1 + geom_line() + labs(title = "見やすさのための補助の折れ線を追加")

p1 + p2
2.2.3

第2章2節は以上。