Rでグラフ作成！
-基礎の基礎の入門編-

担当：河崎祐樹
森林保護 D2

なぜRでグラフを書くの？
１．グラフがきれい
２．書き直しが簡単
３．同じようなグラフを簡単に書けるなぜRでグラフを書くの？
１．グラフがきれい
２．書き直しが簡単
３．同じようなグラフを簡単に書ける

グラフがきれいだと気持ちがいいなぜRでグラフを書くの？
１．グラフがきれい

グラフがきれいだと気持ちがいい

２．書き直しが簡単

セミナー直前，卒論･修論
直前の書き直し命令
でもあわてない

３．同じようなグラフを簡単に書ける

なぜRでグラフを書くの？
１．グラフがきれい

グラフがきれいだと気持ちがいい

２．書き直しが簡単

セミナー直前，卒論･修論
直前の書き直し命令
でもあわてない

３．同じようなグラフを簡単に書ける

時間の節約！！

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-2 読み込ませたデータから、必要な値を取り出せる
1-3 条件をつけて、必要な値を取り出せる

２．関数plot()が使えるようになる
2-1 x軸とy軸に代入する値を指定できる
2-2 グラフの色やプロットの形を指定できる
2-3 グラフのタイプを変更できる
2-4 グラフのタイトル、x軸やy軸に名前を入れられる
2-5 一枚のシートに複数のグラフを重ねられる
2-6 グラフにタイトル･凡例をつける
2-7 グラフを保存できる

今回扱うデータ

個体数（0－503）
日付（10通り）キクイムシの種類（10通り）

採集を開始してからの期間

１．データを自由に扱えるようになる

1-1 エクセルに保存したデータを読み込ませる
1-2 読み込ませたデータから、必要な値を取り出せる
1-3 条件をつけて、必要な値を取り出せる１．データを自由に扱えるようになる
1-1 エクセルに保存したデータを読み込ませる#ファイル# → 名前をつけて保存# → ファイルの種類からタブ区切り.txtか#カンマ区切り.csvを選択# → 適当な名前･保存場所に保存#Rにデータを読み込ませるときはread.table()/read.csv()を使う
read.table("ファイル名.txt", header = T)
read.csv ("ファイル名.csv", header = T)

１．データを自由に扱えるようになる
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-2 読み込ませたデータから、必要な値を取り出せる#1-2
names(data) #列の名前row namesを確認

１．データを自由に扱えるようになる
1-2 読み込ませたデータから、必要な値を取り出せる#1-2
names(data) #列の名前row namesを確認#全体のデータのうち、個体数(N)だけ知りたい
data$N #dataの中のN ($ = の)

１．データを自由に扱えるようになる
1-2 読み込ませたデータから、必要な値を取り出せる#1-2
names(data) #列の名前row namesを確認#全体のデータのうち、個体数(N)だけ知りたい
data$N #dataの中のN ($ = の)#全体のデータのうち、どんな種類のキクイムシがいるかが知りたい
levels(data$species)

１．データを自由に扱えるようになる
1-2 読み込ませたデータから、必要な値を取り出せる#1-2
names(data) #列の名前row namesを確認#全体のデータのうち、個体数(N)だけ知りたい
data$N #dataの中のN ($ = の)#全体のデータのうち、どんな種類のキクイムシがいるかが知りたい
levels(data$species)#キクイムシの種数がほしい
nlevels(data$species)

１．データを自由に扱えるようになる
1-3 条件をつけて、必要な値を取り出せる#全体のデータのうち、種speciesがhane-mijika#という条件の個体数Nだけ知りたい
data$N[data$species == "hane-mijika"]
条件は[]で囲む。
== を2つつなげる
文字の場合は、””で囲む

2. 関数plot()が使えるようになる

個体数

2-1 x軸とy軸に代入する値を指定できる

日付

こんなグラフを作るには・・・
X軸：日付のデータ
Y軸：個体数のデータを代入すればよい

２．関数plot()が使えるようになる
2-1 x軸とy軸に代入する値を指定できる
2-2 グラフの色やプロットの形を指定できる
2-3 グラフのタイプを変更できる
2-4 グラフのタイトル、x軸やy軸に名前を入れられる
2-5 一枚のシートに複数のグラフを重ねられる
2-6 グラフにタイトル･凡例をつける
2-7 グラフを保存できる

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軸に代入する値を指定できる

10

plot("X軸", "Y軸")

24yplot(x, y)68

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を代入

246
x810

2. 関数plot()が使えるようになる
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. 関数plot()が使えるようになる
2-1 x軸とy軸に代入する値を指定できる

30

35

plot("X軸", "Y軸")20

25#hane-mijikaを採集した日付
date <- data$period[data$species == "hane-mijika" ]0plot(date, N)

51015

N

#hane-mijikaの個体数
N <- data$N[data$species == "hane-mijika" ]050100date

150

2. 関数plot()が使えるようになる
2-1 x軸とy軸に代入する値を指定できる3035plot("X軸", "Y軸")20

25#hane-mijikaを採集した日付
グラフが描けた！！！
date <- data$period[data$species== "hane-mijika" ]0plot(date, N)

51015

N

#hane-mijikaの個体数
N <- data$N[data$species == "hane-mijika" ]

050

100
date150

2. 関数plot()が使えるようになる
2-1 x軸とy軸に代入する値を指定できる
35

plot("X軸", "Y軸")30

グラフに色をつけたい

プロットした点の形を変えたい25#hane-mijikaを採集した日付
グラフが描けた！！！
date <- data$period[data$species== "hane-mijika" ]20

けど，そっけない

1015

N#hane-mijikaの個体数
N <- data$N[data$species == "hane-mijika" ]5

点と点をつなげて見やすくしたい

0plot(date, N)

x軸･y軸に名前をつけたい

050100date

150

2. 関数plot()が使えるようになる
2-2 グラフの色やプロットの形を指定できる#プロットの形
pch = 数字, pch = "文字"plot(date, N, pch = 3)plot(date, N, pch = 20)
plot(date, N, pch = "$")
plot(date, N, pch = "A")2. 関数plot()が使えるようになる
2-2 グラフの色やプロットの形を指定できる
3525

pch = 20051015N

051015N2025

pch = 320

plot(date, N, pch = 3)plot(date, N, pch = 20)
plot(date, N, pch = "$")
plot(date, N, pch = "A")

30

30

35

#プロットの形
pch = 数字, pch = "文字"

050

100

150

050100

date

date

A30

30

35$

35

150

2025

pch = "A"1015N1015

N

20

25

pch = "$"

$
0$
50

A

5$

$
100
date

$

$
150

$

0

0

5$

A0A

A
50

A100
date

AA
150

A

2. 関数plot()が使えるようになる
2-2 グラフの色やプロットの形を指定できる35
25

pch = 20

0

51015

N

051015N

2025

pch = 320

plot(date, N, pch = 3)plot(date, N, pch = 20)
plot(date, N, pch = "$")
plot(date, N, pch = "A")

30

30

35

#プロットの形
pch = 数字, pch = "文字"

050

100

150

050

100datedate

A30

30

35

$

35

150

20

25

pch = "A"1015

N1015N2025

pch = "$"

0

まだ、そっけない･･･

$0$
50

A

5$

$
100
date

$$
150

$

0

5$

A0

A

A
50

A100
date

AA
150

A

2. 関数plot()が使えるようになる
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)

2. 関数plot()が使えるようになる
2-2 グラフの色やプロットの形を指定できる#色の変更
col = "color"
col = "数字"##cf. colors

050100date

150352025col = 3051015N25
20051015N
051015N

2025

col = "red"3035

col ="darkblue"

303035plot(date, N, pch = 20, col = "red")plot(date, N, pch = 20, col = "darkblue")plot(date, N, pch = 20, col = 3)050100date

150050100date

150

2. 関数plot()が使えるようになる
2-2 グラフの色やプロットの形を指定できる#色の変更
col = "color"
col = "数字"##cf. colors

グラフの形がわかりにくい
点と点を線でつなげるには？

050100date

150352025col = 3051015N25
20051015N
051015N20

25

col = "red"3035

col ="darkblue"

30

30

35

plot(date, N, pch = 20, col = "red")plot(date, N, pch = 20, col = "darkblue")plot(date, N, pch = 20, col = 3)050100date

150050100date

150

2. 関数plot()が使えるようになる
2-3 グラフのタイプを変更できる#2-3
plot(x, y, type = "文字")#p, l, b, c, o, h, s, S, nplot(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. 関数plot()が使えるようになる

25

type = "l"15500050

100

150

050

100150date

005515type = "n"15

type = "b"N

25253535dateNplot(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")515

Ntype = "p"

N

25

35

#2-3
plot(x, y, type = "文字")#p, l, b, c, o, h, s, S, n

35

2-3 グラフのタイプを変更できる

050100date

150050100date

150

2. 関数plot()が使えるようになる

25

type = "l"15500050100

150050100150

date

15

type = "n"15

type = "b"N

25253535dateNplot(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")515

Ntype = "p"

N

25

35

#2-3
plot(x, y, type = "文字")#p, l, b, c, o, h, s, S, n

35

2-3 グラフのタイプを変更できる

00

55

だいぶ，グラフらしくなってきた．
･･･でも，軸に名前がない
050100date

150

050100date

150

2. 関数plot()が使えるようになる
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. 関数plot()が使えるようになる
2-4 グラフのタイトル、x軸やy軸に名前を入れられる

3035

#2-4
xlab = "X軸の名前"
ylab = "Y軸の名前"

25
20
15
1050

Number of individuals

plot(date, N,
pch = 20,
col = "black",
type = "b",xlab = "Collection date of the beetle",
ylab = "Number of individuals")

050

100
Collection date of the beetle150

2. 関数plot()が使えるようになる
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. 関数plot()が使えるようになる
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. 関数plot()が使えるようになる
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. 関数plot()が使えるようになる
2-5 一枚のシートに複数のグラフを重ねられる#2-5#tyconのデータを読み込む#”tycon”の日付
date_t <- data$period[data$species == "tycon"]#tyconの個体数
N_t <- data$N[data$species == "tycon"]2. 関数plot()が使えるようになる
2-5 一枚のシートに複数のグラフを重ねられる

2520151050

Number of individuals

3035#グラフを重ねるときはplotではなく、pointsを使う
points(date_t, N_t,
pch = 20,
col = "red",type = "b")050100
Collection date of the beetle150

2. 関数plot()が使えるようになる
2-6 グラフにタイトル･凡例をつける#plot()やpoints()でグラフを書いたあとに，#title(main="Main Title", sub = "Sub Title")
title(main = "dynamics of ambrosia beetles")2. 関数plot()が使えるようになる
2-6 グラフにタイトル･凡例をつける

dynamics of ambrosia beetles

25

Number of individuals

3035#plot()やpoints()でグラフを書いたあとに，#title(main="Main Title", sub = "Sub Title")

05101520title(main = "dynamics of ambrosia beetles")

050100

Collection date of the beetle150

2. 関数plot()が使えるようになる
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. 関数plot()が使えるようになる
2-6 グラフにタイトル･凡例をつける

25

Number of individuals

3035#plot()やpoints()でグラフを書いたあとに，
dynamics of ambrosia beetles#legend(4, 4, ← 凡例の位置
paste("example",c(1:5)), ←凡例の名前
hane-mijikatycon
col = c(1:5) ← 色)

05

10

1520

legend(”topright”, c(”hane-mijika”, ”tycon”),
pch = 20
col = c(1, 2))

050

100

Collection date of the beetle

1502. 関数plot()が使えるようになる
2-7 グラフを保存する#2-7#図の上で右クリック# → ○○でコピー# → イラストレーター、パワーポイントなどに貼り付け#図の上で右クリック# → ○○で保存# → 保存場所･ファイル名を指定

2. 関数plot()が使えるようになる
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を当てはめるデータを変更するだけで，似たようなグラフが簡単に描ける
今までに書いてきたプログラムが多ければ多いほど，グラフを描くのが楽になる
今回のグラフは初歩の初歩．
卒業研究でよくやられる｢年次変化｣をグラフにする方法→ 横軸を期間ではなく，日付にすることも可能 (多少面倒)
グラフを散布図・ヒストグラム・円グラフ･箱ひげ図などに変更も可能