ggplot2で棒グラフ

original code from https://mrunadon.github.io/ThesisPlot/ ggplot2で論文用の棒グラフと折れ線グラフを描く

library(tidyverse)
## -- Attaching packages ---------------------------------------------------- tidyverse 1.2.1 --
## √ ggplot2 3.1.1     √ purrr   0.3.2
## √ tibble  2.1.1     √ dplyr   0.8.3
## √ tidyr   0.8.3     √ stringr 1.4.0
## √ readr   1.3.1     √ forcats 0.4.0
## -- Conflicts ------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
# dataの用意
# 今回はtibbleで用意したいと思います

# R付属のirisデータセット
# head()関数で最初の6行を表示
head(iris)

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

# as_tibble()関数で、listやarrayをtibbleに変換
iris <- as_tibble(iris)
head(iris)
str(iris)
## Classes 'tbl_df', 'tbl' and 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file)

# x %>% f(a, b) は f(x, a, b) と等価。
# https://heavywatal.github.io/rstats/dplyr.html
# mutate()関数で栽培条件を追加。また、月も追加

irisOrdered <- iris %>%
  mutate(Cultivation.Condition = as.factor(rep(c("wild", "cultivate"), 75))) %>%
  mutate(Month = rep(c("Jan", "Feb", "Mar", "Apr", "May"), 30))
head(irisOrdered)

ggplot2でグラフを描く

  1. キャンバスを用意する
  2. 棒グラフを描く
  3. エラーバーをつける
  4. 色をつけていく
  5. 表示範囲、軸のタイトルを設定
  6. 最終的な微調整
# 棒グラフ
# theme_classic
# グラフフォントサイズ12ptを初期設定する
# キャンバスを用意してgに格納
g <- ggplot(irisOrdered, aes(x=Species, y=Sepal.Length)) +
  theme_set(theme_classic(base_size = 18, base_family = "Helvetica"))

# キャンバスgに棒グラフを描く
# stat_summary()関数を用いる
g <- g +
  stat_summary(
    aes(fill=Cultivation.Condition),    # 塗りつぶしは栽培条件で変更する
    fun.y=mean, geom="bar",   # 栽培条件ごとに平均値を算出して、棒グラフを出す
    alpha=0.8,                # 透過性0.8
    colour="black",           # 棒グラフの周りの線を黒色固定
    position="dodge"
  )

# 棒グラフの上からエラーバーをつける
g <- g +
  stat_summary(
    aes(group=Cultivation.Condition),
    fun.data=mean_sdl,
    geom="errorbar",
    size=0.5,
    width=0.1,
    position=position_dodge(.9),
    fun.args = list(mult = 1)
  )

# 原点を左下にする
g <- g +
  scale_y_continuous(expand=c(0,0))

# 白黒にする
g <- g +
  theme_set(theme_classic(base_size = 18)) +
  scale_fill_grey()

g
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x,
## x$y, : Windows のフォントデータベースにフォントファミリが見付かりません
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## Windows のフォントデータベースにフォントファミリが見付かりません

library(magick)
## Linking to ImageMagick 6.9.9.14
## Enabled features: cairo, freetype, fftw, ghostscript, lcms, pango, rsvg, webp
## Disabled features: fontconfig, x11
tiger <- image_read_svg('http://jeroen.github.io/images/tiger.svg', width = 400)
print(tiger)
## # A tibble: 1 x 7
##   format width height colorspace matte filesize density
##   <chr>  <int>  <int> <chr>      <lgl>    <int> <chr>  
## 1 PNG      400    400 sRGB       TRUE         0 72x72

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.