Rでグラフ 作 成! - 基 礎 の 基 礎 の 入 門 編 - 担 当 : 河 崎 祐 樹 森 林 保 護 D2
なぜRでグラフを 書 くの? 1.グラフがきれい 2. 書 き 直 しが 簡 単 3. 同 じようなグラフを 簡 単 に 書 ける
なぜRでグラフを 書 くの? 1.グラフがきれい グラフがきれいだと 気 持 ちがいい 2. 書 き 直 しが 簡 単 3. 同 じようなグラフを 簡 単 に 書 ける
なぜRでグラフを 書 くの? 1.グラフがきれい グラフがきれいだと 気 持 ちがいい 2. 書 き 直 しが 簡 単 セミナー 直 前, 卒 論 修 論 直 前 の 書 き 直 し 命 令 でもあわてない 3. 同 じようなグラフを 簡 単 に 書 ける
なぜRでグラフを 書 くの? 1.グラフがきれい グラフがきれいだと 気 持 ちがいい 2. 書 き 直 しが 簡 単 3. 同 じようなグラフを 簡 単 に 書 ける セミナー 直 前, 卒 論 修 論 直 前 の 書 き 直 し 命 令 でもあわてない 時 間 の 節 約!!
Rでグラフを 書 く 前 の 準 備 実 験 観 察 調 査 をする データを 取 る データをExcelに 入 力 する でも,RはExcel 形 式 の データを 読 み 込 めない
Rでグラフを 書 く 前 の 準 備 実 験 観 察 調 査 をする データを 取 る データをExcelに 入 力 する でも,RはExcel 形 式 の データを 読 み 込 めない
Rでグラフを 書 く 前 の 準 備 実 験 観 察 調 査 をする データを 取 る データをExcelに 入 力 する でも,RはExcel 形 式 の データを 読 み 込 めない Rで 読 み 込 める 形 式 に 変 えてあげる
Rでグラフを 書 く 前 の 準 備 1.データファイルをExcelで 開 く 2.ファイル 名 前 をつけて 保 存 ファイルの 種 類 タブ 形 式 (.txt)/csv 形 式 (.csv) 3. 保 存 する 場 所 を 選 択 マイコンピュータ My Document R
今 回 の 目 標 Rでグラフを 描 いてみたくなる 1.データを 自 由 に 扱 えるようになる 1-1 エクセルに 保 存 したデータを 読 み 込 ませる 1-2 読 み 込 ませたデータから 必 要 な 値 を 取 り 出 せる 1-3 条 件 をつけて 必 要 な 値 を 取 り 出 せる 2. 関 数 plot()が 使 えるようになる 2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる 2-2 グラフの 色 やプロットの 形 を 指 定 できる 2-3 グラフのタイプを 変 更 できる 2-4 グラフのタイトル x 軸 やy 軸 に 名 前 を 入 れられる 2-5 一 枚 のシートに 複 数 のグラフを 重 ねられる 2-6 グラフにタイトル 凡 例 をつける 2-7 グラフを 保 存 できる
今 回 扱 うデータ 日 付 (10 通 り) キクイムシの 種 類 (10 通 り) 個 体 数 (0-503) 採 集 を 開 始 して からの 期 間
1.データを 自 由 に 扱 えるようになる 1-1 エクセルに 保 存 したデータを 読 み 込 ませる 1-2 読 み 込 ませたデータから 必 要 な 値 を 取 り 出 せる 1-3 条 件 をつけて 必 要 な 値 を 取 り 出 せる
1.データを 自 由 に 扱 えるようになる 1-1 エクセルに 保 存 したデータを 読 み 込 ませる #ファイル # 名 前 をつけて 保 存 # ファイルの 種 類 からタブ 区 切 り.txtか # カンマ 区 切 り.csvを 選 択 # 適 当 な 名 前 保 存 場 所 に 保 存 #Rにデータを 読 み 込 ませるときはread.table()/read.csv()を 使 う read.table("ファイル 名.txt", header = T) read.csv ("ファイル 名.csv", header = T)
1.データを 自 由 に 扱 えるようになる 1-1 エクセルに 保 存 したデータを 読 み 込 ませる #ファイル # 名 前 をつけて 保 存 # ファイルの 種 類 からタブ 区 切 り.txtか # カンマ 区 切 り.csvを 選 択 # 適 当 な 名 前 保 存 場 所 に 保 存 #Rにデータを 読 み 込 ませるときはread.table()/read.csv()を 使 う read.table("ファイル 名.txt", header = T) read.csv ("ファイル 名.csv", header = T) #data.csvというデータファイルを 読 み 込 ませる data <- read.csv("data.csv", header = T) data # 読 み 込 んだデータが 表 示 される
1.データを 自 由 に 扱 えるようになる 1-2 読 み 込 ませたデータから 必 要 な 値 を 取 り 出 せる #1-2 names(data) # 列 の 名 前 row namesを 確 認
1.データを 自 由 に 扱 えるようになる 1-2 読 み 込 ませたデータから 必 要 な 値 を 取 り 出 せる #1-2 names(data) # 列 の 名 前 row namesを 確 認 # 全 体 のデータのうち 個 体 数 (N)だけ 知 りたい data$n #dataの 中 のN ($ = の)
1.データを 自 由 に 扱 えるようになる 1-2 読 み 込 ませたデータから 必 要 な 値 を 取 り 出 せる #1-2 names(data) # 列 の 名 前 row namesを 確 認 # 全 体 のデータのうち 個 体 数 (N)だけ 知 りたい data$n #dataの 中 のN ($ = の) # 全 体 のデータのうち どんな 種 類 のキクイムシがいるかが 知 りたい levels(data$species)
1.データを 自 由 に 扱 えるようになる 1-2 読 み 込 ませたデータから 必 要 な 値 を 取 り 出 せる #1-2 names(data) # 列 の 名 前 row namesを 確 認 # 全 体 のデータのうち 個 体 数 (N)だけ 知 りたい data$n #dataの 中 のN ($ = の) # 全 体 のデータのうち どんな 種 類 のキクイムシがいるかが 知 りたい levels(data$species) #キクイムシの 種 数 がほしい nlevels(data$species)
1.データを 自 由 に 扱 えるようになる 1-3 条 件 をつけて 必 要 な 値 を 取 り 出 せる # 全 体 のデータのうち 種 speciesがhane-mijika #という 条 件 の 個 体 数 Nだけ 知 りたい data$n[data$species == "hane-mijika"] 条 件 は[]で 囲 む == を2つつなげる 文 字 の 場 合 は で 囲 む
2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる 個 体 数 日 付 こんなグラフを 作 るには X 軸 : 日 付 のデータ Y 軸 : 個 体 数 のデータ を 代 入 すればよい
2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる 2-2 グラフの 色 やプロットの 形 を 指 定 できる 2-3 グラフのタイプを 変 更 できる 2-4 グラフのタイトル x 軸 やy 軸 に 名 前 を 入 れられる 2-5 一 枚 のシートに 複 数 のグラフを 重 ねられる 2-6 グラフにタイトル 凡 例 をつける 2-7 グラフを 保 存 できる
plot("x 軸 ", "Y 軸 ") x <- c(1:10)#xに1, 2, 3, 4, 5, 6, 7, 8, 9, 10を 代 入 y <- c(10:1)#yに10, 9, 8, 7, 6, 5, 4, 3, 2, 1を 代 入 plot(x, y) 2. 関 数 plot()が 使 えるようになる 2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる
plot("x 軸 ", "Y 軸 ") x <- c(1:10)#xに1, 2, 3, 4, 5, 6, 7, 8, 9, 10を 代 入 y <- c(10:1)#yに10, 9, 8, 7, 6, 5, 4, 3, 2, 1を 代 入 plot(x, y) 2. 関 数 plot()が 使 えるようになる 2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる y 2 4 6 8 10 2 4 6 8 10 x
plot("x 軸 ", "Y 軸 ") #hane-mijikaを 採 集 した 日 付 date <- data$period[data$species == "hane-mijika" ] #hane-mijikaの 個 体 数 N <- data$n[data$species == "hane-mijika" ] plot(date, N) 2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる
plot("x 軸 ", "Y 軸 ") #hane-mijikaを 採 集 した 日 付 date <- data$period[data$species == "hane-mijika" ] #hane-mijikaの 個 体 数 N <- data$n[data$species == "hane-mijika" ] plot(date, N) 2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる N 0 5 10 15 20 25 30 35 date
plot("x 軸 ", "Y 軸 ") #hane-mijikaを 採 集 した 日 付 date <- data$period[data$species == "hane-mijika" ] #hane-mijikaの 個 体 数 N <- data$n[data$species == "hane-mijika" ] plot(date, N) 2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる N 0 5 10 15 20 25 30 35 グラフが 描 けた!!! date
plot("x 軸 ", "Y 軸 ") #hane-mijikaを 採 集 した 日 付 date <- data$period[data$species == "hane-mijika" ] #hane-mijikaの 個 体 数 N <- data$n[data$species == "hane-mijika" ] plot(date, N) 2-1 x 軸 とy 軸 に 代 入 する 値 を 指 定 できる N 0 5 10 15 20 25 30 35 グラフに 色 を つけたい グラフが 描 けた!!! けど,そっけない 点 と 点 をつなげて 見 やすくしたい プロットした 点 の 形 を 変 えたい x 軸 y 軸 に 名 前 をつけたい date
2-2 グラフの 色 やプロットの 形 を 指 定 できる #プロットの 形 pch = 数 字, pch = " 文 字 " plot(date, N, pch = 3) plot(date, N, pch = 20) plot(date, N, pch = "$") plot(date, N, pch = "A")
2-2 グラフの 色 やプロットの 形 を 指 定 できる #プロットの 形 pch = 数 字, pch = " 文 字 " plot(date, N, pch = 3) plot(date, N, pch = 20) plot(date, N, pch = "$") plot(date, N, pch = "A") N 0 5 10 15 20 25 30 35 pch = 3 pch = 20 date N 0 5 10 15 20 25 30 35 date N 0 5 10 15 20 25 30 35 $ pch = "$" $ $ $ $ $ $ $ $ N 0 5 10 15 20 25 30 35 A A pch = "A" A A A A A A A date date
2-2 グラフの 色 やプロットの 形 を 指 定 できる #プロットの 形 pch = 数 字, pch = " 文 字 " plot(date, N, pch = 3) plot(date, N, pch = 20) plot(date, N, pch = "$") plot(date, N, pch = "A") N 0 5 10 15 20 25 30 35 pch = 3 pch = 20 date N 0 5 10 15 20 25 30 35 date まだ そっけない N 0 5 10 15 20 25 30 35 $ pch = "$" $ $ $ $ $ $ $ $ date N 0 5 10 15 20 25 30 35 A pch = "A" A A A A A A A A date
# 色 の 変 更 col = "color" col = " 数 字 " ##cf. colors 2-2 グラフの 色 やプロットの 形 を 指 定 できる plot(date, N, pch = 20, col = "red") plot(date, N, pch = 20, col = "darkblue") plot(date, N, pch = 20, col = 3)
# 色 の 変 更 col = "color" col = " 数 字 " ##cf. colors 2-2 グラフの 色 やプロットの 形 を 指 定 できる plot(date, N, pch = 20, col = "red") plot(date, N, pch = 20, col = "darkblue") plot(date, N, pch = 20, col = 3) N 0 5 10 15 20 25 30 35 col = "red" N 0 5 10 15 20 25 30 35 col = "darkblue" N 0 5 10 15 20 25 30 35 col = 3 date date date
2-2 グラフの 色 やプロットの 形 を 指 定 できる # 色 の 変 更 col = "color" col = " 数 字 " ##cf. colors グラフの 形 がわかりにくい 点 と 点 を 線 でつなげるには? plot(date, N, pch = 20, col = "red") plot(date, N, pch = 20, col = "darkblue") plot(date, N, pch = 20, col = 3) N 0 5 10 15 20 25 30 35 col = "red" N 0 5 10 15 20 25 30 35 col = "darkblue" N 0 5 10 15 20 25 30 35 col = 3 date date date
2-3 グラフのタイプを 変 更 できる #2-3 plot(x, y, type = " 文 字 ") #p, l, b, c, o, h, s, S, n plot(date, N, pch = 20, col = "red", type = "p") plot(date, N, pch = 20, col = "red", type = "l") plot(date, N, pch = 20, col = "red", type = "b") plot(date, N, pch = 20, col = "red", type = "n")
2-3 グラフのタイプを 変 更 できる #2-3 plot(x, y, type = " 文 字 ") #p, l, b, c, o, h, s, S, n plot(date, N, pch = 20, col = "red", type = "p") plot(date, N, pch = 20, col = "red", type = "l") plot(date, N, pch = 20, col = "red", type = "b") plot(date, N, pch = 20, col = "red", type = "n") N N 0 5 15 25 35 0 5 15 25 35 type = "p" date type = "b" N N 0 5 15 25 35 0 5 15 25 35 type = "l" date type = "n" date date
2-3 グラフのタイプを 変 更 できる #2-3 plot(x, y, type = " 文 字 ") #p, l, b, c, o, h, s, S, n plot(date, N, pch = 20, col = "red", type = "p") plot(date, N, pch = 20, col = "red", type = "l") plot(date, N, pch = 20, col = "red", type = "b") plot(date, N, pch = 20, col = "red", type = "n") N N 0 5 15 25 35 0 5 15 25 35 type = "p" date type = "b" だいぶ,グラフらしくなってきた. でも, 軸 に 名 前 がない date N N 0 5 15 25 35 0 5 15 25 35 type = "l" date type = "n" date
2-4 グラフのタイトル x 軸 やy 軸 に 名 前 を 入 れられる #2-4 xlab = "X 軸 の 名 前 " ylab = "Y 軸 の 名 前 " plot(date, N, pch = 20, col = "black", type = "b", xlab = "Collection date of the beetle", ylab = "Number of individuals")
#2-4 xlab = "X 軸 の 名 前 " ylab = "Y 軸 の 名 前 " 2-4 グラフのタイトル x 軸 やy 軸 に 名 前 を 入 れられる plot(date, N, pch = 20, col = "black", type = "b", xlab = "Collection date of the beetle", ylab = "Number of individuals") Number of individuals 0 5 10 15 20 25 30 35 Collection date of the beetle
2-5 一 枚 のシートに 複 数 のグラフを 重 ねられる #trap 1でとれたXylosandrus.germanusのLの 日 付 date <- data$pseudo.date[data$species == "hane-mijika"] #trap 1でとれたXylosandrus.germanusのLの 個 体 数 N <- data$n[data$species == "hane-mijika"]
2-5 一 枚 のシートに 複 数 のグラフを 重 ねられる #trap 1でとれたXylosandrus.germanusのLの 日 付 date <- data$pseudo.date[data$species == "hane-mijika"] #trap 1でとれたXylosandrus.germanusのLの 個 体 数 N <- data$n[data$species == "hane-mijika"] 今 までは hane-mijika のグラフを 書 いてきた ほかの 種 のグラフを 重 ねるには?
2-5 一 枚 のシートに 複 数 のグラフを 重 ねられる #trap 1でとれたXylosandrus.germanusのLの 日 付 date <- data$pseudo.date[data$species == "hane-mijika"] #trap 1でとれたXylosandrus.germanusのLの 個 体 数 N <- data$n[data$species == "hane-mijika"] 今 までは hane-mijika のグラフを 書 いてきた 個 体 数 ほかの 種 のグラフを 重 ねるには? 日 付
2-5 一 枚 のシートに 複 数 のグラフを 重 ねられる #2-5 #tyconのデータを 読 み 込 む # tycon の 日 付 date_t <- data$period[data$species == "tycon"] #tyconの 個 体 数 N_t <- data$n[data$species == "tycon"]
2-5 一 枚 のシートに 複 数 のグラフを 重 ねられる #グラフを 重 ねるときはplotではなく pointsを 使 う points(date_t, N_t, pch = 20, col = "red", type = "b" ) Number of individuals 0 5 10 15 20 25 30 35 Collection date of the beetle
2-6 グラフにタイトル 凡 例 をつける #plot()やpoints()でグラフを 書 いたあとに, #title(main="main Title", sub = "Sub Title") title(main = "dynamics of ambrosia beetles")
2-6 グラフにタイトル 凡 例 をつける #plot()やpoints()でグラフを 書 いたあとに, #title(main="main Title", sub = "Sub Title") title(main = "dynamics of ambrosia beetles") Number of individuals 0 5 10 15 20 25 30 35 dynamics of ambrosia beetles Collection date of the beetle
2-6 グラフにタイトル 凡 例 をつける #plot()やpoints()でグラフを 書 いたあとに, #legend(4, 4, 凡 例 の 位 置 paste("example",c(1:5)), 凡 例 の 名 前 col = c(1:5) 色 ) legend( topright, c( hane-mijika, tycon ), pch = 20 col = c(1, 2) )
2-6 グラフにタイトル 凡 例 をつける #plot()やpoints()でグラフを 書 いたあとに, #legend(4, 4, 凡 例 の 位 置 paste("example",c(1:5)), 凡 例 の 名 前 col = c(1:5) 色 ) Number of individuals legend( topright, c( hane-mijika, tycon ), pch = 20 col = c(1, 2) ) 0 5 10 15 20 25 30 35 dynamics of ambrosia beetles hane-mijika tycon Collection date of the beetle
2-7 グラフを 保 存 する #2-7 # 図 の 上 で 右 クリック # でコピー # イラストレーター パワーポイントなどに 貼 り 付 け # 図 の 上 で 右 クリック # で 保 存 # 保 存 場 所 ファイル 名 を 指 定
2-7 グラフを 保 存 できる #PDFで 保 存 することも 可 能 #pdf(file = "ファイルネーム.pdf") # 拡 張 子.pdfを 忘 れないように pdf(file = "fig.pdf") plot(date, N, pch = 20, col = "black", type = "b", xlab = "Collection date of the beetle", ylab = "Number of individuals") points(date_t, N_t, pch = 20, col = "red", type = "b" ) title(main = "dynamics of ambrosia beetles") legend( topright, c( hane-mijika, tycon ), pch = 20, col = c(1, 2) ) dev.off() #PDFを 閉 じる # 忘 れると Rを 閉 じるまでPDFが 開 けない
まとめと 補 足 グラフ 用 プログラムを 書 いて 保 存 しておけば, 書 き 直 しも 簡 単 plotを 当 てはめるデータを 変 更 するだけで, 似 たようなグラフが 簡 単 に 描 ける 今 までに 書 いてきたプログラムが 多 ければ 多 いほど, グラフを 描 くのが 楽 になる 今 回 のグラフは 初 歩 の 初 歩. 卒 業 研 究 でよくやられる 年 次 変 化 をグラフにする 方 法 横 軸 を 期 間 ではなく, 日 付 にすることも 可 能 ( 多 少 面 倒 ) グラフを 散 布 図 ヒストグラム 円 グラフ 箱 ひげ 図 などに 変 更 も 可 能