nagoyar_3: r言語によるプロット入門

21
1 Nagoya.R #3 (2010/06/19) R言語によるプロット入門 小林 雄一郎 (大阪大学/日本学術振興会)

Upload: yuichiro-kobayashi

Post on 31-May-2015

5.443 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: NagoyaR_3: R言語によるプロット入門

1

Nagoya.R #3 (2010/06/19)

R言語によるプロット入門

小林 雄一郎

(大阪大学/日本学術振興会)

Page 2: NagoyaR_3: R言語によるプロット入門

2

自己紹介

》小林 雄一郎(こばやし ゆういちろう)

× Twitter: @langstat

× はてな: langstat

》所属

× 大阪大学大学院言語文化研究科

× 日本学術振興会特別研究員

× Osaka.R

》関心領域

× テキストマイニング、コーパス言語学、自然言語処理

》註

× 私は、統計の専門家でもRの専門家でもありません!

Page 3: NagoyaR_3: R言語によるプロット入門

3

早速ですが、Rでプロットを書いてみよう

#適当なx軸の値とy軸の値を各10個ずつ読み込む

x<-c(83, 46, 53, 41, 6, 28, 16, 74, 89, 29)

y<-c(48, 85, 54, 70, 23, 62, 5, 97, 8, 50)

#簡単なplotを描く

plot(x, y)

20 40 60 8020406080100

x

y

Page 4: NagoyaR_3: R言語によるプロット入門

4

ラベルを表示したい

#適当なラベルを用意する

z<-c("A","B","C","D","E","F","G","H","I","J")

text(x, y, z)

#plot上にラベルを表示させる

text(x, y, z)

20 40 60 8020406080100

x

y AB

CDE

FG

H

IJ【問題発生】

ラベルがついたけど、

点と文字が重なって

とても見にくい

Page 5: NagoyaR_3: R言語によるプロット入門

5

ラベルと点をずらして表示したい

#とりあえず、plotを作り直す

plot(x, y)

#ラベル座標の位置を指定する

#pos=1だと下、pos=2だと左、

#pos=3だと上、pos=4だと右

text(x, y, z, pos=2)

20 40 60 8020406080100

x

y AB

CDE

FG

H

IJx軸は80までしか目盛

りがないのに、y軸は

100まで目盛りがある

のが気持ち悪い

Page 6: NagoyaR_3: R言語によるプロット入門

6

x軸とy軸の範囲を指定したい

#x軸とy軸の範囲を指定する

plot(x, y, xlim=c(1, 100), ylim=c(1, 100))

text(x, y, z, pos=2)

0 20 40 60 80 100020406080100

x

y AB

CDE

FG

H

IJ

Page 7: NagoyaR_3: R言語によるプロット入門

7

タイトルと軸ラベルをつけたい

#タイトルと軸ラベルをつける

plot(x, y, xlim=c(1, 100), ylim=c(1, 100), main="テストの点数", xlab="中間テスト",

ylab="期末テスト")

text(x, y, z, pos=2)

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ

Page 8: NagoyaR_3: R言語によるプロット入門

8

逆に軸ラベルを非表示にしたい

#軸ラベルを非表示にする

plot(x, y, xlim=c(1, 100), ylim=c(1, 100), ann=F)

text(x, y, z, pos=2)

0 20 40 60 80 100020406080100

AB

CDE

FG

H

IJ

Page 9: NagoyaR_3: R言語によるプロット入門

9

カラーにしたい

#色をつける

plot(x, y, xlim=c(1, 100), ylim=c(1, 100), main="テストの点数", xlab="中間テスト",

ylab="期末テスト", col="red")

text(x, y,z,pos=2, col="blue")

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ

Page 10: NagoyaR_3: R言語によるプロット入門

10

点の種類を変えたい

#点の種類を変える

#pchは1~20までが指定可能

plot(x, y, xlim=c(1, 100), ylim=c(1, 100), main="テストの点数", xlab="中間テスト",

ylab="期末テスト", col="red", pch=3)

text(x, y, z, pos=2, col="blue")

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ

Page 11: NagoyaR_3: R言語によるプロット入門

11

いくつかのグループの違いを見たい

#A~EとF~Jのpchとcolを変える

plot(x, y, xlim=c(1, 100), ylim=c(1, 100),

main="テストの点数", xlab="中間テスト",

ylab="期末テスト",

col=c("blue","blue","blue",

"blue","blue","green","green",

"green","green","green"), pch=

c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2))

text(x, y, z, pos=2, col=c("blue",

"blue","blue","blue","blue",

"green","green","green",

"green","green"))

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ

Page 12: NagoyaR_3: R言語によるプロット入門

12

図中に線を引きたい

#図中に線を引く

#縦はv, 横はh

#色はcolで指定

#点線は、lty=“dotted”

abline(v=50, h=50, col=“black“

lty=“dotted”)

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ

Page 13: NagoyaR_3: R言語によるプロット入門

13

回帰直線を引きたい

#回帰直線を引く

result<-lm(y ~ x)

result

abline(result, col="red")

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ

Page 14: NagoyaR_3: R言語によるプロット入門

14

図中に格子を描きたい

#plotを描き直す

(省略)

#5×5の格子を描く

grid(5, 5, col="black")

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ

Page 15: NagoyaR_3: R言語によるプロット入門

15

凡例をつけたい

#凡例をつける

legend(82, 35, paste("1年", 1:2, "組"), col=c("blue", "green"), pch=c(1, 2), ncol=1)

0 20 40 60 80 100020406080100

テストテストテストテストのののの点数点数点数点数

中間テスト期末テスト A

BCD

EF

G

H

IJ 1年 1 組1年 2 組

Page 16: NagoyaR_3: R言語によるプロット入門

16

(おまけ1)ラベルのつけ方あれこれ

#簡単なplotを描く

plot(x, y)

#(上下左右だけではなく)任意の場所にラベルをつける

text(x+2, y+2, z)

20 40 60 8020406080100

x

y AB

CDE

FG

H

IJ

Page 17: NagoyaR_3: R言語によるプロット入門

17

ラベルだけを表示したい

#ラベルだけを表示する

#cexは字の大きさを変更する

plot(NA, NA, xlim=c(0, 100), ylim=c(0, 100))

text(x, y, z, xlim=c(0, 100), ylim=c(0, 100), cex=1.5)

0 20 40 60 80 100020406080100

NA

NAA

B

C

D

E

F

G

H

I

J

Page 18: NagoyaR_3: R言語によるプロット入門

18

(おまけ2)プロット行列を作りたい

#irisの行列を表示する

iris

#ラベル行を除いて、plot行列を作る

pairs(iris[-5]) Sepal.Length 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.54.55.56.57.5

2.02.53.03.54.0 Sepal.WidthPetal.Length 123456

7

4.5 5.5 6.5 7.50.51.01.52.02.5 1 2 3 4 5 6 7 Petal.Width

Page 19: NagoyaR_3: R言語によるプロット入門

19

プロット行列をカスタマイズしたい

#plot行列のカスタマイズ

#下方パネルに回帰直線を引いたプロットを描く

lowerf<-function(x,y){

points(x,y)

abline(lm(y~x), col="red")

}

#上方パネルに相関係数を表示し、その強さに応じて色を変える

upperf<-function(x,y){

loc<-complex(,mean(range(x)),mean(range(y)))

r<-round(cor(x,y),3)

if(r>=0.7) iro<-"blue" else {if(r>=0.2) iro<-"black" else iro<-"red"}

text(loc,lab=r,col=iro,cex=1.6)

}

#plot行列の作成

pairs(iris[-5],lower.panel=lowerf,upper.panel=upperf)

Page 20: NagoyaR_3: R言語によるプロット入門

20

完成

Sepal.Length 2.0 2.5 3.0 3.5 4.0-0.118 0.872 0.5 1.0 1.5 2.0 2.54.55.56.57.50.818

2.02.53.03.54.0 Sepal.Width -0.428 -0.366Petal.Length 123456

70.9634.5 5.5 6.5 7.50.51.01.52.02.5 1 2 3 4 5 6 7 Petal.Width

Page 21: NagoyaR_3: R言語によるプロット入門

21

》 pairs()の話は、また別の機会に。

》御清聴ありがとうございました。

》主な参考文献

× 舟尾暢男・高浪洋平 (2005) 『データ解析環境「R」』 東

京: 工学社(特に、第6章「グラフィックス」).