第10回 R言語勉強会
信州大学 久保琢也
2021年3月5日
今後の予定
回 日程 内容 パッケージ
第1回 10/16 イントロ -
第2回 10/30 ベクトル -
第3回 11/13 データフレームの操作① base
第4回 11/27 データフレームの操作② dplyr
第5回 12/11 データフレームの操作③ dplyr
第6回 12/25 文字列処理① stringr
第7回 01/08 文字列処理② stringr
休み 01/22 RA協議会法人化の説明会のため
第8回 2/ 5 データフレームの操作④ dplyr, tidyr
第9回 2/19 グラフ化① ggplot2
第10回 3/ 5 グラフ化② ggplot2
ggplot2によるグラフ
part.2
事前の準備をお願いします
❖ KAKENより採択課題情報ダウンロード
− 期間:2018年, 2019年, 2020年(別のファイル)
− 種目:基盤研究(A)
− 形式:CSVファイル
https://kaken.nii.ac.jp
パッケージ
❖ パッケージの呼び出し
library( dplyr ) # DFの操作
library( readr ) # データの読み書き
library( DT ) # データフレームの可視化
library( ggplot2 ) # グラフ化
科研費データのインポート(以下のどちらか)
❖ read_csv( )関数
❖ read.csv( )関数
# 科研費データのインポート
d2018 <- read_csv( kibanA_2018.csv )
d2019 <- read_csv( kibanA_2019.csv )
d2020 <- read_csv( kibanA_2020.csv )
# 科研費データのインポート
d2018 <- read.csv( kibanA_2018.csv )
d2019 <- read.csv( kibanA_2019.csv )
d2020 <- read.csv( kibanA_2020.csv )
下準備
# 年度情報を追加してデータフレームを結合
d0 <- bind_rows(
d2018 %>% mutate( Year = Y2018 ),
d2019 %>% mutate( Year = Y2019 ),
d2020 %>% mutate( Year = Y2020 ),
)
折れ線グラフ
目標:旧帝大の年度別の採択件数の推移
データの集計
# 旧帝国大学名ベクトル
univs <- c( 北海道大学 , 東北大学 , 東京大学 ,
名古屋大学 , 京都大学 , 大阪大学 , 九州大学 )
# 集計する
d1 <- d0 %>%
group_by( 研究機関, Year ) %>%
summarize( N = n( ) ) %>%
filter( 研究機関 %in% univs )
datatable( d1 )
折れ線グラフを書く
# ggplotオブジェクトの立ち上げとデータの指定
d1 %>%
ggplot( )
空白のキャンバスが
表示されるのみ
折れ線グラフを書く
# x軸にYear, y軸にNをマッピング
d1 %>%
ggplot( aes( x = Year, y =N ) )
折れ線グラフを書く
# グラフのタイプに折れ線グラフを指定
d1 %>%
ggplot( aes( x = Year, y =N ) ) +
geom_line( )
折れ線グラフを書く
# 折れ線を研究機関ごとにグルーピング
d1 %>%
ggplot( aes( x = Year, y =N, group = 研究機関 ) ) +
geom_line( )
折れ線グラフを書く
# 研究機関ごとに色を変える
d1 %>%
ggplot(aes(x = Year, y = N, group = 研究機関, color = 研究機関)) +
geom_line( )
折れ線グラフを書く
# 各データポイントに点を追加する
d1 %>%
ggplot(aes(x = Year, y = N, group = 研究機関, color = 研究機関)) +
geom_line( ) +
geom_point( )
折れ線グラフを書く
# 日本語のフォントを表示させる(for Mac)
d1 %>%
ggplot(aes(x = Year, y = N, group = 研究機関, color = 研究機関)) +
theme_bw( base_family = HiraKakuPro-W3 ) +
geom_line( ) +
geom_point( )
折れ線グラフを書く
# 日本語のフォントを表示させる(for Mac)
d1 %>%
ggplot(aes(x = Year, y = N, group = 研究機関, color = 研究機関)) +
theme_bw( base_family = HiraKakuPro-W3 ) +
labs( x = 年度 , y = 採択件数 ,
title = 旧帝大の年度別採択件数の推移 ) +
geom_line( ) +
geom_point( )
棒グラフ①
目標:年度別の採択件数の棒グラフ
棒グラフを書く①
# 最低限の棒グラフ
d1 %>%
ggplot( aes( x = 研究機関, y = N ) )+
geom_bar( stat = identity ) +
theme_bw( base_family = HiraKakuPro-W3 )
棒グラフを書く①
# 年度によって棒の色を変える
d1 %>%
ggplot( aes( x = 研究機関, y = N, fill = Year ) )+
geom_bar( stat = identity ) +
theme_bw( base_family = HiraKakuPro-W3 )
棒グラフを書く①
# 棒の位置を変える
d1 %>%
ggplot( aes( x = 研究機関, y = N, fill = Year ) )+
geom_bar( stat = identity , position = dodge ) +
theme_bw( base_family = HiraKakuPro-W3 )
棒グラフを書く①
# ラベルを変える
d1 %>%
ggplot( aes( x = 研究機関, y = N, fill = Year ) )+
geom_bar( stat = identity , position = dodge ) +
theme_bw( base_family = HiraKakuPro-W3 ) +
labs( y = 採択件数 , title = 旧帝大の年度別採択件数 )
棒グラフ②
目標:採択件数の100%積み上げ棒グラフ
※グラフ内の数値は採択件数
棒グラフを書く②
# x軸をYear, y軸をNとする棒グラフ
d1 %>%
ggplot( aes( x = Year, y = N ) )+
geom_bar( stat = identity ) +
theme_bw( base_family = HiraKakuPro-W3 )
棒グラフを書く②
# 研究機関によって色を変える
d1 %>%
ggplot( aes( x = Year, y = N, fill = 研究機関 ) )+
geom_bar( stat = identity ) +
theme_bw( base_family = HiraKakuPro-W3 )
棒グラフを書く②
# 100%積み上げ棒グラフに変える
d1 %>%
ggplot( aes( x = Year, y = N, fill = 研究機関 ) )+
geom_bar( stat = identity , position = fill ) +
theme_bw( base_family = HiraKakuPro-W3 )
棒グラフを書く②
# 棒の枠線を白にする
d1 %>%
ggplot( aes( x = Year, y = N, fill = 研究機関 ) )+
geom_bar( stat = identity , position = fill , color = white ) +
theme_bw( base_family = HiraKakuPro-W3 )
棒グラフを書く②
# グラフを横向きにする
d1 %>%
ggplot( aes( x = Year, y = N, fill = 研究機関 ) )+
geom_bar( stat = identity , position = fill , color = white ) +
theme_bw( base_family = HiraKakuPro-W3 ) +
coord_flip( )
棒グラフを書く②
# グラフにテキストを追加する
d1 %>%
ggplot( aes( x = Year, y = N, fill = 研究機関 ) )+
geom_bar( stat = identity , position = fill , color = white ) +
theme_bw( base_family = HiraKakuPro-W3 ) +
coord_flip( ) +
geom_text( aes( label = N ), position = position_fill( vjust = 0.5 ) )
終わり
おまけ
# 円グラフ
d1 %>%
filter(Year == Y2020 ) %>%
# まずは棒グラフを書く(1本の棒)
ggplot(aes(x = , y = N, fill = 研究機関)) +
geom_bar(stat = identity , color = white ) +
# 棒グラフをぐにゃりと円形にする(directionは円の周り方の指定)
coord_polar(theta = y , direction = -1) +
# スッピンのテーマにする(theme_void関数)
theme_void(base_family = HiraKakuPro-W3 )

R言語勉強会#10.pdf