ggplot2で論文用の白黒折れ線グラフ
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
ggplot2で論文用の白黒折れ線グラフ [2018/08/10] – [見出し] adash333 | ggplot2で論文用の白黒折れ線グラフ [2020/08/12] – [2.白黒の折れ線グラフの作成] adash333 | ||
---|---|---|---|
行 5: | 行 5: | ||
基本的には、< | 基本的には、< | ||
- | ===== 見出し | + | ===== ソースコード |
- | 作成中 | + | |
+ | https:// | ||
- | サマリー作成用の関数の定義 | ||
- | Plotting means and error bars (ggplot2)\\ | ||
- | http:// | ||
- | < | ||
- | summarySE <- function(data=NULL, | ||
- | conf.interval=.95, | ||
- | library(plyr) | ||
- | # New version of length which can handle NA's: if na.rm==T, don't count them | ||
- | length2 <- function (x, na.rm=FALSE) { | ||
- | if (na.rm) sum(!is.na(x)) | ||
- | else | ||
- | } | ||
- | # This does the summary. For each group' | + | ===== 開発環境 |
- | # N, mean, and sd | + | https:// |
- | datac <- ddply(data, groupvars, .drop=.drop, | + | |
- | .fun = function(xx, | + | |
- | c(N | + | |
- | mean = mean | + | |
- | sd = sd | + | |
- | ) | + | |
- | }, | + | |
- | measurevar | + | |
- | ) | + | |
- | # Rename the " | + | 2018年8月現在、メールアドレスを登録するのみで、無料です。 |
- | datac <- rename(datac, | + | |
- | datac$se <- datac$sd | + | [[https:// |
- | # Confidence interval multiplier for standard error | + | {{:pasted: |
- | # Calculate t-statistic for confidence interval: | + | |
- | # e.g., if conf.interval is .95, use .975 (above/ | + | |
- | ciMult <- qt(conf.interval/2 + .5, datac$N-1) | + | |
- | datac$ci <- datac$se * ciMult | + | |
- | return(datac) | + | インストール終了後の画面 |
- | } | + | |
- | </code> | + | {{: |
+ | |||
+ | 参考:http: | ||
+ | |||
+ | ===== Rmdファイルの新規作成と保存 ===== | ||
+ | File > New File > R Notebook で、R Notebookファイルを新規作成。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 以下のようにR Notebookファイルが作成されるので、 | ||
+ | |||
+ | |||
+ | |||
+ | ===== 1.グラフ作成用に平均と標準偏差を計算 ===== | ||
+ | ggplot2()でグラフを記載する前に、データを整理する必要があります。 | ||
- | 白黒の折れ線グラフの作成 | + | dplyr(tidyverse)の |
+ | -<wrap hi> | ||
+ | -<wrap hi> | ||
+ | を用いて、グループごとに、個数、平均、標準偏差を計算して新しい表を作成します。 | ||
< | < | ||
library(tidyverse) | library(tidyverse) | ||
- | tg <- ToothGrowth | + | head(ToothGrowth) |
- | tgc <- summarySE(tg, measurevar="len", groupvars=c(" | + | str(ToothGrowth) |
+ | |||
+ | d <- ToothGrowth %>% | ||
+ | group_by(supp, dose) %>% | ||
+ | summarise( | ||
+ | n=n(), | ||
+ | mean_len=mean(len), | ||
+ | sd_len=sd(len) | ||
+ | ) | ||
+ | # 蛇足だが、以下の書き方はsdがNAになってしまうので注意 | ||
+ | # https:// | ||
+ | # summarise(n=n(), len=mean(len), sd=sd(len)) | ||
+ | d | ||
pd <- position_dodge(0.1) # move them .05 to the left and right | pd <- position_dodge(0.1) # move them .05 to the left and right | ||
- | ggplot(tgc, aes(x=dose, y=len, shape=supp)) + | + | ggplot(d, aes(x=dose, y=mean_len, shape=supp)) + |
theme_set(theme_classic()) + | theme_set(theme_classic()) + | ||
geom_point(size=4, | geom_point(size=4, | ||
- | geom_errorbar(aes(ymin=len-se, ymax=len+se), width=.1, position=pd) + | + | geom_errorbar(aes(ymin=mean_len-sd_len, ymax=mean_len+sd_len), width=.1, position=pd) + |
geom_line(aes(linetype = supp), position=pd) | geom_line(aes(linetype = supp), position=pd) | ||
+ | </ | ||
+ | ===== 2.白黒の折れ線グラフの作成 ===== | ||
+ | |||
+ | 上記で作成した表dを用いて、ggplot()関数でグラフを描きます。 | ||
+ | |||
+ | < | ||
+ | pd <- position_dodge(0.1) # move them .05 to the left and right | ||
+ | |||
+ | ggplot(d, aes(x=dose, y=mean_len, shape=supp)) + | ||
+ | theme_set(theme_classic()) + | ||
+ | geom_point(size=4, | ||
+ | geom_errorbar(aes(ymin=mean_len-sd_len, | ||
+ | geom_line(aes(linetype = supp), position=pd) + | ||
+ | # グラフにタイトルをつける | ||
+ | ggtitle(" | ||
+ | theme(plot.title = element_text(hjust=0.5)) + | ||
+ | theme(plot.title = element_text(size = 20), | ||
+ | axis.title.x = element_text(size= 20), | ||
+ | axis.title.y = element_text(size= 20), | ||
+ | axis.text.x = element_text(size= 20), | ||
+ | axis.text.y = element_text(size= 20) | ||
+ | ) + | ||
+ | # y軸のラベルの書き換え | ||
+ | labs(y=" | ||
</ | </ | ||
以下のようなグラフが出力されます。 | 以下のようなグラフが出力されます。 | ||
+ | |||
+ | {{ : | ||
{{: | {{: | ||
+ | ===== 3.グラフをpngファイルで出力 ===== | ||
+ | |||
+ | 以下のように、ggsave()関数で、グラフをpngファイルで出力することができます。 | ||
+ | |||
+ | グラフを出力する方法としては、RmdファイルをKnit(htmlファイルなどに変換すること)してから、htmlファイル上の画像を右クリックして保存することでも、保存することができます。 | ||
- | グラフをpngファイルで出力することもできます。 | ||
< | < | ||
library(tidyverse) | library(tidyverse) | ||
行 91: | 行 126: | ||
{{: | {{: | ||
+ | ===== エラーバーを片方だけにつける ===== | ||
+ | 下記リンク先によりますと、 | ||
+ | < | ||
+ | 1. geom_errorbar()でwidth=0のエラーバーを作成 | ||
+ | 2. geom_segment()で片方だけエラーバーの横線を追加 | ||
+ | </ | ||
+ | という流れになります。 | ||
+ | |||
+ | geom_segment()でエラーバーのxの始点と終点を指定するときに、 | ||
+ | < | ||
+ | 横軸が数字であれば、as.numeric(key)-0.1のように指定する | ||
+ | |||
+ | 横軸が文字(00pre, | ||
+ | keyを0, | ||
+ | as.numeric()で数値に変更しておく。 | ||
+ | </ | ||
+ | |||
+ | ところが少し難しいポイントとなります。 | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | pd <- position_dodge(0.1) # move them .05 to the left and right | ||
+ | |||
+ | ggplot(xc, aes(x=key, y=value, shape=DM, group = DM)) + | ||
+ | theme_set(theme_classic()) + | ||
+ | geom_point(size=4) + | ||
+ | #errorbar without caps | ||
+ | geom_errorbar(data=with(xc, | ||
+ | aes(ymin = value, ymax = value+se), | ||
+ | geom_errorbar(data=with(xc, | ||
+ | aes(ymin = value-se, ymax = value), | ||
+ | geom_line(aes(linetype = DM), position=pd) + | ||
+ | # | ||
+ | geom_segment(data=with(xc, | ||
+ | aes(y=value+se, | ||
+ | geom_segment(data=with(xc, | ||
+ | aes(y=value-se, | ||
+ | ylim(230, 300) + | ||
+ | ggtitle(" | ||
+ | theme(plot.title = element_text(hjust = 0.5)) | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | https:// | ||
+ | |||
+ | ===== グラフのtitleを真ん中上に記載 ===== | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | library(tidyverse) | ||
+ | |||
+ | tg <- ToothGrowth | ||
+ | tgc <- summarySE(tg, | ||
+ | |||
+ | ggplot(tgc, aes(x=dose, y=len, shape=supp)) + | ||
+ | theme_set(theme_classic()) + | ||
+ | |||
+ | ylim(0, 40) + | ||
+ | | ||
+ | ggtitle(" | ||
+ | theme(plot.title = element_text(hjust = 0.5)) | ||
+ | |||
+ | </ | ||
===== リンク ===== | ===== リンク ===== | ||
+ | |||
+ | |||
+ | |||
+ | https:// | ||
+ | |||
+ | |||
+ | |||
+ | ===== リンク(英語) ===== | ||
https:// | https:// | ||
行 107: | 行 218: | ||
https:// | https:// | ||
+ | ===== リンク ===== | ||
+ | 目次:[[初めての医療統計: | ||
+ | |||
+ | 前: | ||
+ | |||
+ | 次: | ||
ggplot2で論文用の白黒折れ線グラフ.txt · 最終更新: 2020/08/12 by adash333