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

7,017 views

Published on

Published in: Technology, Business
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,017
On SlideShare
0
From Embeds
0
Number of Embeds
50
Actions
Shares
0
Downloads
44
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

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

  1. 1. Nagoya.R #3 (2010/06/19) R言語によるプロット入門 小林 雄一郎 (大阪大学/日本学術振興会) 1
  2. 2. 自己紹介 》 小林 雄一郎(こばやし ゆういちろう) × Twitter: @langstat × はてな: langstat 》 所属 × 大阪大学大学院言語文化研究科 × 日本学術振興会特別研究員 × Osaka.R 》 関心領域 × テキストマイニング、コーパス言語学、自然言語処理 》 註 × 私は、統計の専門家でもRの専門家でもありません! 2
  3. 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) 0 0 1 #簡単なplotを描く plot(x, y) 0 8 0 6 y 0 4 0 2 02 04 06 08 3 x
  4. 4. ラベルを表示したい #適当なラベルを用意する z<-c("A","B","C","D","E","F","G","H","I","J") text(x, y, z) 0 0 #plot上にラベルを表示させる 1 H text(x, y, z) B 0 8 D 0 F 6 【問題発生】 y C J A ラベルがついたけど、 0 4 点と文字が重なって とても見にくい E 0 2 I G 02 04 06 08 4 x
  5. 5. ラベルと点をずらして表示したい #とりあえず、plotを作り直す plot(x, y) #ラベル座標の位置を指定する 0 0 #pos=1だと下、pos=2だと左、 1 H #pos=3だと上、pos=4だと右 B text(x, y, z, pos=2) 0 8 D 0 F 6 x軸は80までしか目盛 y C J A りがないのに、y軸は 0 100まで目盛りがある 4 のが気持ち悪い E 0 2 I G 02 04 06 08 5 x
  6. 6. x軸とy軸の範囲を指定したい #x軸とy軸の範囲を指定する plot(x, y, xlim=c(1, 100), ylim=c(1, 100)) text(x, y, z, pos=2) 0 0 1 H B 0 8 D 0 F 6 C y J A 0 4 0 E 2 I G 0 0 02 04 06 08 001 6 x
  7. 7. タイトルと軸ラベルをつけたい #タイトルと軸ラベルをつける plot(x, y, xlim=c(1, 100), ylim=c(1, 100), main="テストの点数", xlab="中間テスト", ylab="期末テスト") text(x, y, z, pos=2) 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 0 0 1 H B 0 8 D 0 F 6 ト ス C テ J 末 A 期 0 4 0 E 2 I G 0 0 02 04 06 08 001 7 トステ間中
  8. 8. 逆に軸ラベルを非表示にしたい #軸ラベルを非表示にする plot(x, y, xlim=c(1, 100), ylim=c(1, 100), ann=F) text(x, y, z, pos=2) 0 0 1 H B 0 8 D 0 F 6 C J A 0 4 0 E 2 I G 0 0 02 04 06 08 001 8
  9. 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 0 1 H B 0 8 D 0 F 6 ト ス C テ J 末 A 期 0 4 0 E 2 I G 0 0 02 04 06 08 001 9 トステ間中
  10. 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 0 1 H B 0 8 D 0 F 6 ト ス C テ J 末 A 期 0 4 0 E 2 I G 0 0 02 04 06 08 001 10 トステ間中
  11. 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", 0 0 1 "blue","blue","green","green", H "green","green","green"), pch= B 0 8 c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2)) text(x, y, z, pos=2, col=c("blue", D F "blue","blue","blue","blue", ト 0 6 ス C "green","green","green", テ 末 J A "green","green")) 期 0 4 0 E 2 I G 0 0 02 04 06 08 001 11 トステ間中
  12. 12. 図中に線を引きたい #図中に線を引く #縦はv, 横はh #色はcolで指定 #点線は、lty=“dotted” 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 0 abline(v=50, h=50, col=“black“ 0 1 H lty=“dotted”) B 0 8 D 0 F 6 ト ス C テ J 末 A 期 0 4 0 E 2 I G 0 0 02 04 06 08 001 12 トステ間中
  13. 13. トステ間中 13 001 08 06 04 02 0 0 G I 2 0 E 4 0 期 A 末 J テ C ス ト 6 0 F D 8 0 B H 1 0 0 abline(result, col="red") 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ result result<-lm(y ~ x) #回帰直線を引く 回帰直線を引きたい
  14. 14. トステ間中 14 001 08 06 04 02 0 0 G I 2 0 E 4 0 期 A 末 J テ C ス ト 6 0 F D 8 0 B H 1 0 0 grid(5, 5, col="black") 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ #5×5の格子を描く (省略) #plotを描き直す 図中に格子を描きたい
  15. 15. 凡例をつけたい #凡例をつける legend(82, 35, paste("1年", 1:2, "組"), col=c("blue", "green"), pch=c(1, 2), ncol=1) 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 数 点の ト ス テ 0 0 1 H B 0 8 D 0 F 6 ト ス C テ J 末 A 期 0 4 組 1 年1 組 2 年1 0 E 2 I G 0 0 02 04 06 08 001 15 トステ間中
  16. 16. (おまけ1)ラベルのつけ方あれこれ #簡単なplotを描く plot(x, y) #(上下左右だけではなく)任意の場所にラベルをつける text(x+2, y+2, z) 0 0 1 H B 0 8 D F 0 6 C y J A 0 4 E 0 2 I G 02 04 06 08 16 x
  17. 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 0 1 H 0 B 8 D 0 6 F A C N J A 0 4 0 2 E I G 0 0 02 04 06 08 001 17 AN
  18. 18. 7 6 5 4 3 2 1 5.7 5.6 5.5 5.4 18 0 . 5 1 . htdiW.lateP 0 1 . 5 2 . 0 2 . 5 1 2 3 4 htgneL.lateP 5 6 7 2 . 0 2 . 5 3 . htdiW.lapeS 0 3 . 5 4 . 0 4 . 5 5 . 5 htgneL.lapeS 6 . 5 7 . 5 pairs(iris[-5]) 5.2 0.2 5.1 0.1 5.0 0.4 5.3 0.3 5.2 0.2 #ラベル行を除いて、plot行列を作る iris #irisの行列を表示する (おまけ2)プロット行列を作りたい
  19. 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) 19
  20. 20. 20 7 6 5 4 3 2 1 5.7 5.6 5.5 5.4 0 . 5 1 . htdiW.lateP 0 1 . 5 2 . 0 2 . 5 1 2 3 4 3 69 .0 htgneL.lateP 5 6 7 2 . 0 2 . 5 3 . 66 3. 0- 8 24 .0 - htdiW.lapeS 0 3 . 5 4 . 0 4 . 5 5 . 5 8 18 .0 27 8. 0 81 1. 0- htgneL.lapeS 6 . 5 7 . 5 5.2 0.2 5.1 0.1 5.0 0.4 5.3 0.3 5.2 0.2 完成
  21. 21. 》 pairs()の話は、また別の機会に。 》 御清聴ありがとうございました。 》 主な参考文献 × 舟尾暢男・高浪洋平 (2005) 『データ解析環境「R」』 東 京: 工学社(特に、第6章「グラフィックス」). 21

×