『データ可視化学入門』を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.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.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節は以上。