This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

解説サイト

06.Google Colaboratoryで時系列データで折れ線グラフを描画

開発環境

Windows 10 Pro (1803) R version 3.5.3 (2019-03-11) RStudio Version 1.1.463

参考サイト

論文用の棒グラフと折れ線グラフをggplot2で描く

ggplot2で論文用の白黒折れ線グラフ

# 後で使用するので、とりあえずtidyverseを使用するための準備
library(tidyverse)
## -- Attaching packages ---------------------------------------------------- tidyverse 1.2.1 --
## √ ggplot2 3.1.1     √ purrr   0.3.2
## √ tibble  2.1.1     √ dplyr   0.8.3
## √ tidyr   0.8.3     √ stringr 1.4.0
## √ readr   1.3.1     √ forcats 0.4.0
## -- Conflicts ------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
# read_excel()関数を使用するための準備
library(readxl)

# d に、book2.xlsxの1番目のsheetをtibbleデータとして代入する
# d <- read_excel("book2.xlsx", sheet=1)
# d

# Google Colaboratoryでは、book2.xlsxはすぐに消えてしまうので、
# 今回は、以下にtibbleでbook2.xlsxの中身を定義しておきます。

d <- tribble(
  ~id, ~age, ~sex, ~DM, ~HbA1c00M, ~HbA1c01M,   ~HbA1c02M, ~HbA1c03M,
  1,    56, "M",    1,  7.3,    7.4,    7.3,    7.4,
  2,    77, "F",    1,  8.3,    8.4,    8.3,    8.2,
  3,    68, "M",    1,  7.1,    7,  7,  7,
  4,    81, "F",    1,  7.6,    7.4,    7.3,    7.4,
  5,    42, "M",    1,  10.1,   8.4,    7.3,    6.5,
  6,    65, "M",    1,  6.1,    6.2,    6., 6.3,
  7,    68, "F",    1,  7.8,    7.4,    7.9,    8.4,
)
d

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

# 横長のデータを縦長(tidy data)にする
tidy_d <- gather(d, 
  key="time", value="HbA1c",               # 新しくできる列の名前を指定
  HbA1c00M, HbA1c01M, HbA1c02M, HbA1c03M)  # 変形する対象の列を指定
tidy_d

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

# group_by()関数とsummarize()関数を用いてtidy dataをまとめる
d2 <- tidy_d %>% 
  group_by(time) %>%
  summarise(HbA1c_avg = mean(HbA1c), HbA1c_sd = sd(HbA1c))
d2

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

# ggplot()関数とstat_summary()関数で折れ線グラフを描く
g <- ggplot(data = tidy_d, aes(x = time, y=HbA1c)) +
  theme_set(theme_classic()) +
  stat_summary(
    aes(group=sex),    # sex性別ごとに
    fun.y=mean,        # 平均値を
    geom="line",       # 線でつなげて
    colour="black",    # 色は黒で
    size=0.5           # 先の太さは0.5mm
  ) 

# エラーバーの追加
# Google Colaboratoryでは、fun.data = mean_sdl (標準偏差)はうまくいかない
# R Studioではうまくいくよう
g <- g +
  stat_summary(aes(group=sex),  # sex性別ごとに
    fun.data=mean_se,           # mean_seで標準誤差
    geom="errorbar",
    size=0.5,                   # 線の太さ
    width=0.1
  )

# エラーバーの上から重ねて、点(マーク)を描き入れる
g <-g +
  stat_summary(
    aes(shape=sex),    # 種類ごとに点の形を変えて
    fun.y=mean,        # 種類ごとの平均値のところに
    geom="point",      # 点で
    colour="black",
    size=4)

# 形の指定
# 点の形を1番◯、15番■(、23番◇)にマニュアル変更
g <- g +
  scale_shape_manual(values=c(1,15))

# 原点を左下にする
g <- g +
  scale_y_continuous(limits = c(0,10))

g
## Warning: Removed 1 rows containing non-finite values (stat_summary).

## Warning: Removed 1 rows containing non-finite values (stat_summary).

## Warning: Removed 1 rows containing non-finite values (stat_summary).