nagoyar_3: r言語によるプロット入門
TRANSCRIPT
1
Nagoya.R #3 (2010/06/19)
R言語によるプロット入門
小林 雄一郎
(大阪大学/日本学術振興会)
2
自己紹介
》小林 雄一郎(こばやし ゆういちろう)
× Twitter: @langstat
× はてな: langstat
》所属
× 大阪大学大学院言語文化研究科
× 日本学術振興会特別研究員
× Osaka.R
》関心領域
× テキストマイニング、コーパス言語学、自然言語処理
》註
× 私は、統計の専門家でも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
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【問題発生】
ラベルがついたけど、
点と文字が重なって
とても見にくい
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まで目盛りがある
のが気持ち悪い
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
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
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
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
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
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
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
13
回帰直線を引きたい
#回帰直線を引く
result<-lm(y ~ x)
result
abline(result, col="red")
0 20 40 60 80 100020406080100
テストテストテストテストのののの点数点数点数点数
中間テスト期末テスト A
BCD
EF
G
H
IJ
14
図中に格子を描きたい
#plotを描き直す
(省略)
#5×5の格子を描く
grid(5, 5, col="black")
0 20 40 60 80 100020406080100
テストテストテストテストのののの点数点数点数点数
中間テスト期末テスト A
BCD
EF
G
H
IJ
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 組
16
(おまけ1)ラベルのつけ方あれこれ
#簡単なplotを描く
plot(x, y)
#(上下左右だけではなく)任意の場所にラベルをつける
text(x+2, y+2, z)
20 40 60 8020406080100
x
y AB
CDE
FG
H
IJ
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
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
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)
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
21
》 pairs()の話は、また別の機会に。
》御清聴ありがとうございました。
》主な参考文献
× 舟尾暢男・高浪洋平 (2005) 『データ解析環境「R」』 東
京: 工学社(特に、第6章「グラフィックス」).