R Notebookで折れ線グラフと誤差
基本的に、Excelで折れ線グラフと誤差に記載させていただいた方法でExcelを用いて描く法が圧倒的に早いです。しかし、見栄えを細かく設定したい場合は、Rを用いてグラフを描くとよいと思われます。かなり面倒ですが、慣れてくると、おそらく、楽しくなってくると思われます。
開発環境
Windows 8.1 Pro (64-bit)
R Studio 1.1.383
1.データの準備
エクセルに書き込んでいくのですが、1行目にIDや年齢、糖尿病DMの有無などの項目を並べていき、2行目からは各症例の生データを打ち込んでいきます。できれば、項目もデータも『半角英数字』が望ましいです。もし欠損データがある場合は、『NA』と入力します。
今回は、以下のようなデータを用意します。糖尿病の7症例の3ヶ月間のHbA1c[%]の推移のデータだとします。
ID | age | sex | DM | HbA1c00M | HbA1c01M | HbA1c02M | HbA1c03M |
---|---|---|---|---|---|---|---|
00001 | 56 | M | 1 | 7.3 | 7.4 | 7.3 | 7.4 |
00002 | 77 | F | 1 | 8.3 | 8.4 | 8.3 | 8.2 |
00003 | 68 | M | 1 | 7.1 | 7.0 | 7.0 | 7.0 |
00004 | 81 | F | 1 | 7.6 | 7.4 | 7.3 | 7.4 |
00005 | 42 | M | 1 | 10.1 | 8.4 | 7.3 | 6.5 |
00006 | 65 | M | 1 | 6.1 | 6.2 | 6.2 | 6.3 |
00007 | 68 | F | 1 | 7.8 | 7.4 | 7.9 | 8.4 |
エクセルの画面では以下のようになります。
上記のエクセルファイルは、以下からダウンロードできます。
このHbA1cの平均の折れ線グラフと、各月における標準偏差をグラフに書き込みをしたいと思います。
ファイル > 名前をつけて保存 > 「CSV(コンマ区切り)(*.csv)」を選択して、「保存」をクリック。
すると、book2.csv というファイルが保存される。
book2.csvは、以下をテキストファイルにコピーしてからbook2.csvという名前で保存していただけますと、利用できます。
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.2,6.3 7,68,F,1,7.8,7.4,7.9,8.4
2.折れ線グラフの作成
R Studioで、File > New File > R Notebook をクリック
File > Save As で、今回は、171028_002 と入力して保存。
その後、下図のような位置にある、“Insert”>“R” で、「チャンク」を挿入。
以下のようにグレーの部分が表示されるので、グレーの部分の中身に、Rのコードを記入。
Rのコード
# データの読み込み x <- read.csv("book2.csv") head(x)
次に、そのコードを書いたチャンク(グレーの部分)の右上の、緑色の三角ボタンをクリック
すると、そのチャンク内のコードが実行される。
さらに、次の行に新しいチャンクを作成して、以下のコードを記載。
# csvファイルの読み込み x <- read.csv("book2.csv") # (x,y)の値の指定 x1 <- c(0, 1, 2, 3) y1 <- c(mean(x$HbA1c00M), mean(x$HbA1c01M), mean(x$HbA1c02M), mean(x$HbA1c03M)) # 高水準関数plotで、座標面を記載 plot(0, 0, type = "n", xaxt="n", xlim = range(x1), ylim = c(0, max(x[,5:8])), xlab = "Month", ylab = "HbA1c") # 低水準関数pointsとlinesで、上で作った座標面に折れ線グラフを追加記載 m <- apply(x[,5:8], 2, mean) s <- apply(x[,5:8], 2, sd) points(x1, m, pch=16) lines(x1, m) # 低水準関数arrowsで、標準偏差を追加記載 arrows(x1, m + s, x1, m - s, angle = 90, length = 0.1) arrows(x1, m - s, x1, m + s, angle = 90, length = 0.1) axis(1, at=0:3, labels=c("0M", "1M", "2M", "3M"))
上の方の、Preview または、Knit To HTMLをクリック。
保存したいグラフを右クリックして、“Copy Image”をクリック。
Powerpointか何かを開いて、“Ctrl+V”でペースト。
なんだかExcelで折れ線グラフと誤差と比べて非常に面倒ですが、がんばって勉強すれば、エクセルよりも自由度が高そうです。
参考文献
誤差範囲
折れ線グラフにエラーバーをつける方法
https://stats.biopapyrus.jp/r/graph/errorbar.html
ggplot2用例集 入門編 - SlideShare
https://www.slideshare.net/mobile/nocchi_airport/ggplot2-62471507
論文の図の作成
グラフ描画ggplot2の辞書的まとめ20のコード
https://mrunadon.github.io/ggplot2/
→このサイトのコードをコピペするのが簡単か。
ggplot2 まとめ: 初歩から程よいレベルまで - Mr.Unadon -
https://mrunadon.github.io/images/geom_kazutanR.html
論文用の棒グラフと折れ線グラフをggplot2で描く
https://mrunadon.github.io/ThesisPlot/
ggplotで論文用のthemeを作成する
http://qh73xebitbucketorg.readthedocs.io/ja/latest/1.Programmings/r/library/ggplot/tips/reportTheme/
スクリプト冒頭で “library(grid)” とすれば良い
2012-12-18
『心理学研究』に準拠したggplot2のtheme
http://m884.hateblo.jp/entry/2012/12/18/152040
連載
R Markdownで楽々レポートづくり
http://gihyo.jp/admin/serial/01/r-markdown
2017-12-07
Rで横軸が時系列のグラフを書く
http://touch-sp.hatenablog.com/entry/2017/12/07/074914
R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
2016年11月24日
http://bioinfo-dojo.net/2016/11/24/various_axis_r/
R でプログラミング:データの一括処理とグラフ描き
6. グラフの重ね描き
http://takenaka-akio.org/doc/r_auto/chapter_06.html
リンク