この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ggplot2で折れ線グラフ [2017/12/27] adash333 [4. グラフ描画のコードを記載(ggplot関数)] |
ggplot2で折れ線グラフ [2018/10/07] (現在) |
||
---|---|---|---|
ライン 30: | ライン 30: | ||
tidyverseをインストールすることにより、tidyrやggplot2なども自動的にインストールされます。 | tidyverseをインストールすることにより、tidyrやggplot2なども自動的にインストールされます。 | ||
- | 作成中 | + | console画面(RStudioですと、左下の画面内に"console"タブがあると思います。)で、以下を入力して、tidyverseパッケージをインストールします。(ggplot2なども一緒にインストールされます。) |
+ | |||
+ | <code> | ||
+ | install.packages("tidyverse") | ||
+ | </code> | ||
ライン 90: | ライン 94: | ||
===== 3.元データを整然データに変換(gather関数)===== | ===== 3.元データを整然データに変換(gather関数)===== | ||
- | R Studioの画面で、画面右上の方の、"Insert" > "R" で、新しいチャンク(灰色の部分)が挿入されるので、そちらに、以下のコードを記載。 | + | ggplot関数を用いてグラフを描画するためには、元データを『整然データ』(tidy data)に変換する必要があります。 |
+ | 整然データ"tidy data"については、以下のサイトの解説が非常にわかりやすいです。 | ||
+ | |||
+ | 整然データとは何か | ||
+ | http://id.fnshr.info/2017/01/09/tidy-data-intro | ||
+ | |||
+ | R Studioの画面で、画面右上の方の、"Insert" > "R" で、新しいチャンク(灰色の部分)が挿入されるので、そちらに、以下のコードを記載します。 | ||
<code> | <code> | ||
ライン 105: | ライン 115: | ||
{{:pasted:20171227-215513.png}} | {{:pasted:20171227-215513.png}} | ||
- | 作成中 | ||
===== 4. グラフ描画のコードを記載(ggplot関数) ===== | ===== 4. グラフ描画のコードを記載(ggplot関数) ===== | ||
ライン 127: | ライン 136: | ||
IDが数値扱いになり、色分けが変な風になってしまう。\\ | IDが数値扱いになり、色分けが変な風になってしまう。\\ | ||
- | そのため、IDを文字列として認識させる。 | + | そのため、as.character()関数を用いて、IDを文字列として認識させてから、ggplot関数でグラフを描画します。 |
<code> | <code> | ||
ライン 146: | ライン 155: | ||
{{:pasted:20171227-220537.png}} | {{:pasted:20171227-220537.png}} | ||
+ | ==== 男女で平均とSDを求める ==== | ||
+ | <code> | ||
+ | library(tidyverse) | ||
+ | x <- read.csv("book2.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, key) %>% | ||
+ | summarize(mean = mean(value), sd=sd(value)) | ||
+ | group_time_mean_sd | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20171227-222115.png}} | ||
+ | |||
+ | ==== 男女で平均とSDを求めて折れ線グラフ ==== | ||
+ | |||
+ | <code> | ||
+ | library(tidyverse) | ||
+ | |||
+ | x <- read.csv("book2.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, key) %>% | ||
+ | summarize(mean = mean(value), sd=sd(value)) | ||
+ | |||
+ | b <- ggplot(group_time_mean_sd, aes(x=key, y=mean, group=sex, colour=sex)) + | ||
+ | geom_line() | ||
+ | b | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20171227-222259.png}} | ||
+ | |||
+ | ==== 折れ線グラフにエラーバーをつける ==== | ||
+ | |||
+ | <code> | ||
+ | library(tidyverse) | ||
+ | |||
+ | x <- read.csv("book2.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, key) %>% | ||
+ | summarize(mean = mean(value), sd=sd(value)) | ||
+ | |||
+ | b <- ggplot(group_time_mean_sd, aes(x=key, y=mean, group=sex, colour=sex)) + | ||
+ | geom_line() | ||
+ | |||
+ | errors <- aes(ymax = mean + sd, ymin = mean - sd) | ||
+ | b <- b + geom_errorbar(errors, width = 0.2) + geom_point(aes(colour=sex, shape=sex), size=4) | ||
+ | b | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20171227-222408.png}} | ||
===== 参考文献 ===== | ===== 参考文献 ===== | ||
+ | ggplot2 — きれいなグラフを簡単に合理的に\\ | ||
+ | https://heavywatal.github.io/rstats/ggplot2.html | ||
+ | |||
+ | Plotting means and error bars (ggplot2)\\ | ||
+ | http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/ | ||
2016-08-22 | 2016-08-22 | ||
ライン 182: | ライン 262: | ||
library(tidyverse) | library(tidyverse) | ||
</code> | </code> | ||
- | してから、tidyrパッケージのgather()関数を用いると良さそうです。(最初はこんなことを言われても訳わかんないと思いますので、具体例で解説させていただきたいと思います。)蛇足ですが、ggplot2は、tidyverseパッケージに含まれています。 | + | してから、tidyrパッケージのgather()関数を用いるのがお勧めです。このページでは具体例を用いて解説させていただいています。なお、ggplot2は、tidyverseパッケージに含まれています。 |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
ライン 200: | ライン 275: | ||
</html> | </html> | ||
+ | ggplot2を用いたグラフの描き方については、以下の本が非常にお勧めです。 | ||
+ | |||
+ | <html> | ||
+ | |||
+ | <iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=twosquirrel-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=4873116538&linkId=a45356b5efeff42f623fc074f71e9a97"></iframe> | ||
+ | </html> | ||
+ | |||
+ | 英語ですが、以下のサイトに非常によくまとまっています。 | ||
+ | |||
+ | http://www.cookbook-r.com/Graphs/ | ||
===== リンク ===== | ===== リンク ===== | ||