行列データを図示する

  • 2つの場合
    • 列ベクトルの束として見る場合
    • 2次元座標に値が入っていると見る場合
  • 列ベクトルの束として見る場合
    • 対応のある値の列ベクトルのペア
N1<-100
V1<-runif(N1)
V2<-V1+rnorm(N1)*0.1
M<-cbind(V1,V2)
plot(M)
    • 対応のある値の列ベクトルのトリオ
N1<-100
V1<-runif(N1)
V2<-V1+rnorm(N1)*0.1
V3<-V1^2-V2^3
M<-cbind(V1,V2,V3)
plot(M)
# データフレームにすると、列の順序に意味がなくなる
# 順序に意味のない列が複数あるので、それらの組み合わせを網羅する
plot(as.data.frame(M))
    • トリオなら3次元での図示もできる
    • パッケージの追加
install.packages("rgl")
library(rgl)
plot3d(M)
    • 列ごとにプロット
matplot(M)
matplot(M,type="l")
matplot(apply(M,2,sort),type="l")
  • 2次元座標に値が入っていると見る場合
x<-seq(from=0,to=10,length=100)
y<-seq(from=0,to=5,length=50)
M<-matrix(0,length(x),length(y))
for(i in 1:length(x)){
 for(j in 1:length(y)){
  M[i,j]<-sin(x[i])+cos(y[j]^2)
 }
}
image(x,y,M)
persp(x,y,M)
    • 鳥瞰図persp()の視点を変えてみたい
      • help()を使う
help(persp)
      • "theta","phi","r"という引数が視点を変えそう
        • 一つずつ変えてみる
        • 変わり方がわかるような変え方をする
persp(x,y,M,theta=360)
persp(x,y,M,theta=2*pi)
persp(x,y,M,theta=90)
persp(x,y,M,theta=45)
persp(x,y,M,phi=360)
persp(x,y,M,phi=2*pi)
persp(x,y,M,phi=90)
persp(x,y,M,phi=45)
persp(x,y,M,r=1)
persp(x,y,M,r=0.1)
persp(x,y,M,r=10)
persp(x,y,M,r=10000)
    • 座標型データでも3次元座標扱いして3次元プロットできる
xy<-expand.grid(x,y)
M2<-cbind(xy,c(M))
plot3d(M2,type="h")