ggplot2で折れ線グラフ
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
ggplot2で折れ線グラフ [2017/12/22] – [開発環境] adash333 | ggplot2で折れ線グラフ [2018/08/10] – [参考文献] adash333 | ||
---|---|---|---|
行 26: | 行 26: | ||
R Studio 1.1.383 | R Studio 1.1.383 | ||
- | ===== 0. RStudioにtidyverseを | + | ===== 0. RStudioにtidyverseをインストール ===== |
- | インストール(ggplot2なども自動的にインストールされる)===== | + | |
+ | tidyverseをインストールすることにより、tidyrやggplot2なども自動的にインストールされます。 | ||
作成中 | 作成中 | ||
+ | |||
+ | |||
===== 1.ExcelデータからR読み込み用csvファイルの作成 ===== | ===== 1.ExcelデータからR読み込み用csvファイルの作成 ===== | ||
エクセルに書き込んでいくのですが、1行目にIDや年齢、糖尿病DMの有無などの項目を並べていき、2行目からは各症例の生データを打ち込んでいきます。できれば、項目もデータも『半角英数字』が望ましいです。もし欠損データがある場合は、『NA』と入力します。 | エクセルに書き込んでいくのですが、1行目にIDや年齢、糖尿病DMの有無などの項目を並べていき、2行目からは各症例の生データを打ち込んでいきます。できれば、項目もデータも『半角英数字』が望ましいです。もし欠損データがある場合は、『NA』と入力します。 | ||
行 87: | 行 90: | ||
===== 3.元データを整然データに変換(gather関数)===== | ===== 3.元データを整然データに変換(gather関数)===== | ||
- | R Studioの画面で、画面右上の方の、" | + | ggplot関数を用いてグラフを描画するためには、元データを『整然データ』(tidy data)に変換する必要があります。 |
+ | 整然データ" | ||
+ | |||
+ | 整然データとは何か | ||
+ | http:// | ||
+ | |||
+ | R Studioの画面で、画面右上の方の、" | ||
< | < | ||
+ | library(tidyverse) | ||
+ | |||
x <- read.csv(" | x <- read.csv(" | ||
- | summary(x) | + | |
+ | data_plot_individuals <- x %>% | ||
+ | gather(key, value, -ID, -age, -sex, -DM) | ||
+ | data_plot_individuals | ||
</ | </ | ||
- | 作成中 | + | {{: |
===== 4. グラフ描画のコードを記載(ggplot関数) ===== | ===== 4. グラフ描画のコードを記載(ggplot関数) ===== | ||
+ | 各患者でHbA1cの時系列の折れ線グラフ(IDでグループ分け) | ||
- | 作成中 | + | < |
+ | library(tidyverse) | ||
+ | |||
+ | x <- read.csv(" | ||
+ | |||
+ | data_plot_individuals <- x %>% | ||
+ | gather(key, value, -ID, -age, -sex, -DM) | ||
+ | |||
+ | a <- ggplot(data_plot_individuals, | ||
+ | geom_line() | ||
+ | a | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | IDが数値扱いになり、色分けが変な風になってしまう。\\ | ||
+ | そのため、as.character()関数を用いて、IDを文字列として認識させてから、ggplot関数でグラフを描画します。 | ||
+ | |||
+ | < | ||
+ | library(tidyverse) | ||
+ | |||
+ | x <- read.csv(" | ||
+ | x$ID <- as.character(x$ID) | ||
+ | x | ||
+ | |||
+ | data_plot_individuals <- x %>% | ||
+ | gather(key, value, -ID, -age, -sex, -DM) | ||
+ | |||
+ | a <- ggplot(data_plot_individuals, | ||
+ | geom_line() | ||
+ | a | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 男女で平均とSDを求める ==== | ||
+ | |||
+ | < | ||
+ | library(tidyverse) | ||
+ | |||
+ | x <- read.csv(" | ||
+ | x$ID <- as.character(x$ID) | ||
+ | x | ||
+ | |||
+ | data_plot_individuals <- x %>% | ||
+ | gather(key, value, -ID, -age, -sex, -DM) | ||
+ | |||
+ | group_time_mean_sd <- data_plot_individuals %>% | ||
+ | group_by(sex, | ||
+ | summarize(mean = mean(value), | ||
+ | group_time_mean_sd | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 男女で平均とSDを求めて折れ線グラフ ==== | ||
+ | |||
+ | < | ||
+ | library(tidyverse) | ||
+ | |||
+ | x <- read.csv(" | ||
+ | x$ID <- as.character(x$ID) | ||
+ | x | ||
+ | |||
+ | data_plot_individuals <- x %>% | ||
+ | gather(key, value, -ID, -age, -sex, -DM) | ||
+ | |||
+ | group_time_mean_sd <- data_plot_individuals %>% | ||
+ | group_by(sex, | ||
+ | summarize(mean = mean(value), | ||
+ | |||
+ | b <- ggplot(group_time_mean_sd, | ||
+ | geom_line() | ||
+ | b | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 折れ線グラフにエラーバーをつける ==== | ||
+ | |||
+ | < | ||
+ | library(tidyverse) | ||
+ | |||
+ | x <- read.csv(" | ||
+ | x$ID <- as.character(x$ID) | ||
+ | x | ||
+ | |||
+ | data_plot_individuals <- x %>% | ||
+ | gather(key, value, -ID, -age, -sex, -DM) | ||
+ | |||
+ | group_time_mean_sd <- data_plot_individuals %>% | ||
+ | group_by(sex, | ||
+ | summarize(mean = mean(value), | ||
+ | |||
+ | b <- ggplot(group_time_mean_sd, | ||
+ | geom_line() | ||
+ | |||
+ | errors <- aes(ymax = mean + sd, ymin = mean - sd) | ||
+ | b <- b + geom_errorbar(errors, | ||
+ | b | ||
+ | </ | ||
+ | |||
+ | {{: | ||
===== 参考文献 ===== | ===== 参考文献 ===== | ||
+ | ggplot2 — きれいなグラフを簡単に合理的に\\ | ||
+ | https:// | ||
2016-08-22 | 2016-08-22 | ||
行 134: | 行 254: | ||
< | < | ||
library(tidyverse) | library(tidyverse) | ||
- | library(ggplot2) | ||
</ | </ | ||
- | してから、tidyrパッケージのgather()関数を用いると良さそうです。(最初はこんなことを言われても訳わかんないと思いますので、具体例で解説させていただきたいと思います。) | + | してから、tidyrパッケージのgather()関数を用いるのがお勧めです。このページでは具体例を用いて解説させていただいています。なお、ggplot2は、tidyverseパッケージに含まれています。 |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
行 154: | 行 268: | ||
</ | </ | ||
+ | ggplot2を用いたグラフの描き方については、以下の本が非常にお勧めです。 | ||
+ | |||
+ | < | ||
+ | |||
+ | <iframe style=" | ||
+ | </ | ||
+ | |||
+ | 英語ですが、以下のサイトに非常によくまとまっています。 | ||
+ | |||
+ | http:// | ||
===== リンク ===== | ===== リンク ===== | ||
ggplot2で折れ線グラフ.txt · 最終更新: 2020/05/23 by adash333