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

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
ggplot2で論文用の白黒折れ線グラフ [2018/08/10]
adash333 作成
ggplot2で論文用の白黒折れ線グラフ [2018/10/07] (現在)
ライン 5: ライン 5:
 基本的には、<​wrap em>​ggplot()+theme_set(theme_classic())</​wrap>​を用いるのですが、具体的な方法を記載させていただきたいと思います。 基本的には、<​wrap em>​ggplot()+theme_set(theme_classic())</​wrap>​を用いるのですが、具体的な方法を記載させていただきたいと思います。
  
-===== 見出し ​===== +===== 開発環境 ​===== 
-作成中+https://​rstudio.cloud/​
  
 +2018年8月現在、メールアドレスを登録するのみで、無料です。
 +
 +[[https://​rstudio.cloud/​|RStudio Cloud]]のconsole画面(画面左下)で、<​wrap hi><​wrap em>​install.packages("​tidyverse"​)</​wrap></​wrap>​を入力して、tidyverseパッケージをインストールした状態とします。
 +
 +{{:​pasted:​20180813-231913.png}}
 +
 +インストール終了後の画面
 +
 +{{:​pasted:​20180813-232101.png}}
 +
 +参考:http://​twosquirrel.mints.ne.jp/?​p=26918
 +
 +===== Rmdファイルの新規作成と保存 =====
 +File > New File > R Notebook で、R Notebookファイルを新規作成。
 +
 +{{:​pasted:​20180813-232234.png}}
 +
 +{{:​pasted:​20180813-232303.png}}
 +
 +以下のようにR Notebookファイルが作成されるので、
 +
 +
 +
 +===== 1.サマリー作成用の関数の定義 =====
 +ggplot2()でグラフを記載する前に、データを整理する必要があります。
 +
 +Plotting means and error bars (ggplot2)\\
 +http://​www.cookbook-r.com/​Graphs/​Plotting_means_and_error_bars_(ggplot2)/​
 +
 +<​code>​
 +summarySE <- function(data=NULL,​ measurevar, groupvars=NULL,​ na.rm=FALSE,​
 +                      conf.interval=.95,​ .drop=TRUE) {
 +    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       ​length(x)
 +    }
 +
 +    # This does the summary. For each group'​s data frame, return a vector with
 +    # N, mean, and sd
 +    datac <- ddply(data, groupvars, .drop=.drop,​
 +      .fun = function(xx,​ col) {
 +        c(N    = length2(xx[[col]],​ na.rm=na.rm),​
 +          mean = mean   ​(xx[[col]],​ na.rm=na.rm),​
 +          sd   = sd     ​(xx[[col]],​ na.rm=na.rm)
 +        )
 +      },
 +      measurevar
 +    )
 +
 +    # Rename the "​mean"​ column ​   ​
 +    datac <- rename(datac,​ c("​mean"​ = measurevar))
 +
 +    datac$se <- datac$sd / sqrt(datac$N) ​ # Calculate standard error of the mean
 +
 +    # Confidence interval multiplier for standard error
 +    # Calculate t-statistic for confidence interval: ​
 +    # e.g., if conf.interval is .95, use .975 (above/​below),​ and use df=N-1
 +    ciMult <- qt(conf.interval/​2 + .5, datac$N-1)
 +    datac$ci <- datac$se * ciMult
 +
 +    return(datac)
 +}
 +</​code>​
 +
 +===== 2.白黒の折れ線グラフの作成 =====
 +
 +<​code>​
 +library(tidyverse)
 +
 +tg <- ToothGrowth
 +tgc <- summarySE(tg,​ measurevar="​len",​ groupvars=c("​supp","​dose"​))
 +
 +pd <- position_dodge(0.1) # move them .05 to the left and right
 +
 +ggplot(tgc, aes(x=dose, y=len, shape=supp)) +
 +    theme_set(theme_classic()) +
 +    geom_point(size=4,​ position=pd) +
 +    geom_errorbar(aes(ymin=len-se,​ ymax=len+se),​ width=.1, position=pd) +
 +    geom_line(aes(linetype = supp), position=pd)
 +
 +</​code>​
 +
 +以下のようなグラフが出力されます。
 +
 +{{:​pasted:​20180811-054428.png}}
 +
 +===== 3.グラフをpngファイルで出力 =====
 +
 +以下のように、ggsave()関数で、グラフをpngファイルで出力することができます。
 +
 +グラフを出力する方法としては、RmdファイルをKnit(htmlファイルなどに変換すること)してから、htmlファイル上の画像を右クリックして保存することでも、保存することができます。
 +
 +<​code>​
 +library(tidyverse)
 +
 +p0 = ggplot(mpg, aes(x = displ, y = cty))
 +p1 = p0 + geom_point()
 +p2 = p1 + theme_classic(base_size = 20, base_family = "​Helvetica"​)
 +p3 = p2 + stat_smooth(method = lm, formula = y ~ log(x))
 +
 +ggsave("​mpg-displ-cty.png",​ p3, width = 4, height = 4, dpi=300)
 +</​code>​
 +Rmdファイルと同じフォルダに、以下のようなgraph.pngが保存されます。
 +
 +{{:​pasted:​20180811-054708.png}}
 +
 +===== エラーバーを片方だけにつける =====
 +下記リンク先によりますと、
 +<​code>​
 +1. geom_errorbar()でwidth=0のエラーバーを作成
 +2. geom_segment()で片方だけエラーバーの横線を追加
 +</​code>​
 +という流れになります。
 +
 +geom_segment()でエラーバーのxの始点と終点を指定するときに、
 +<​code>​
 +横軸が数字であれば、as.numeric(key)-0.1のように指定する
 +
 +横軸が文字(00pre,​ 1month, 2month, 3monthなど)であれば、
 +keyを0,​1,​2,​3などに置き換えてから(csvファイルを修正しておいてもよいかもしれません)、
 +as.numeric()で数値に変更しておく。
 +</​code>​
 +
 +ところが少し難しいポイントとなります。
 +
 +
 +<​code>​
 +
 +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,​xc[which(DM=='​D'​),​]),​
 +            aes(ymin = value, ymax = value+se),​width=0) +
 +    geom_errorbar(data=with(xc,​xc[which(DM=='​N'​),​]),​
 +            aes(ymin = value-se, ymax = value),​width=0) +
 +    geom_line(aes(linetype = DM), position=pd) +
 +    #​geom_segment for caps
 +    geom_segment(data=with(xc,​xc[which(DM=='​D'​),​]),​
 +            aes(y=value+se,​yend=value+se,​x= as.numeric(substr(key,​ 7, 7))-0.1,​xend= as.numeric(substr(key,​ 7, 7))+0.1)) +
 +    geom_segment(data=with(xc,​xc[which(DM=='​N'​),​]),​
 +            aes(y=value-se,​yend=value-se,​x= as.numeric(substr(key,​ 7, 7))-0.1,​xend= as.numeric(substr(key,​ 7, 7))+0.1)) +
 +    ylim(230, 300) +
 +    ggtitle("​Figure 3") +
 +    theme(plot.title = element_text(hjust = 0.5))
 +
 +</​code>​
 +
 +
 +
 +
 +https://​stackoverflow.com/​questions/​44194700/​selecting-direction-of-multiple-error-bars-in-a-line-plot
 +
 +===== グラフのtitleを真ん中上に記載 =====
 +
 +
 +
 +<​code>​
 +library(tidyverse)
 +
 +tg <- ToothGrowth
 +tgc <- summarySE(tg,​ measurevar="​len",​ groupvars=c("​supp","​dose"​))
 +
 +ggplot(tgc, aes(x=dose, y=len, shape=supp)) +
 +    theme_set(theme_classic()) +
 +
 +    ylim(0, 40) +
 +    ​
 +    ggtitle("​Figure 3") +
 +    theme(plot.title = element_text(hjust = 0.5))
 +
 +</​code>​
 ===== リンク ===== ===== リンク =====
 +
 +
 +
 +https://​heavywatal.github.io/​rstats/​ggplot2.html
 +
 +
 +
 +===== リンク(英語) =====
  
 https://​mrunadon.github.io/​ThesisPlot/​ https://​mrunadon.github.io/​ThesisPlot/​
 +
 +Plotting means and error bars (ggplot2)\\
 +http://​www.cookbook-r.com/​Graphs/​Plotting_means_and_error_bars_(ggplot2)/​
 +
 +
 +JULY 24, 2016
 +Line plot for two-way designs using ggplot2\\
 +https://​drsimonj.svbtle.com/​mean-and-ci-plot-for-twoway-designs-using-ggplot2
 +
 +
 +Chapter 4. Line Graphs\\
 +https://​www.safaribooksonline.com/​library/​view/​r-graphics-cookbook/​9781449363086/​ch04.html
 +
 +
 +
  

ggplot2で論文用の白黒折れ線グラフ.1533932517.txt.gz · 最終更新: 2018/10/07 (外部編集)