[http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html R-Tips] [http://www.sciviews.org/Tinn-R/ Tinn-R] [http://www.is.titech.ac.jp/~mase/mase/html.jp/temp/arrows.jp.html 東工大 R Tips 矢印を描く] [http://www7.atwiki.jp/hayatoiijima/pages/19.html 飯島の雑記帳 plotいろいろ] [http://eau.uijin.com/advgraphs/axes.html plotの詳細いろいろ] =グラフを描く= 高級関数 > curve(sin, 0,2*pi) 時系列を表示(要するに連番データを書き出す) > ts.plot( data.vector ) 頻度プロット > hist(x) 頻度プロット(線で結ぶ) > plot( density(x) ) 行列を画像として表示 > image(x, y, z, col=terrain.colors(100), xlab="hoge", ylab="hage") 色指定は次のようにする > image( ... col=terrain.colors(100) ... ) 緑→黄→白 ほかにも、 rainbow(100) 虹色 heat.colors(100) 赤→黄 topo.colors(100) 青→緑→黄 gray(seq(0,1,length=100)) 黒→白 点の散布図を書き足す。 > points(p.x, p.y) ※ image で行列の転地がひっくり返るのを修正するコード > image2 <- function(m, ...) image(t(m[nrow(m):1,]), col=gray(1:100/100), ...) 行列を画像として表示 その2 filled.contour(x, y, z=mat) image進化版。カラーバー付き。 点を書き足すには次のようにやるのが簡単 pointsの詳細については後述 > filled.contour(x, y, z=mat, plot.axes={axis(1); axis(2); points(p.x, p.y)}) 色指定は次のようにやる。レベル指定は image と違って手動。 > filled.contour(... color=terrain.colors, level=c(10, 20, 30, 40) ...) タイトルとかは次 > filled.contour(... plot.title=title(main="main", xlab="hage", ylab="hage")...) 行列を画像として表示 その3 contour 等高線 (lattice) levelplot 同じようなやつ。 重ね描き > plot(x, y, '''xlim=c(0,1), ylim=c(0,1)''') > par(new=T); plot(x, y, '''xlim=c(0,1), ylim=c(0,1), ann=F''') データ点を描き足し par(new=T)は不要なことに注意! > plot(x.calc, y.calc, type="l") > points(x.data, y.data, pch=20, cex=1, col=c("red", "blue")) (座標を変えずに)重ね描き > curve(cos, 0,2*pi) (重ね描きをするために)白地を描画 > plot( -10:10, 0:1, type="n" ) #x軸の範囲が-10:10で,y軸の範囲が0:1になる。 軸の目盛りを調整する。 > plot( data, lab=c(x, y, hoge) ) hoge はなんでも良いらしい。 x で x軸の目盛りの数 ←! y で y軸の目盛りの数 ←! 軸目盛りに好きな名前をつける。 > plot( 1:5, 0:1, type="n", xaxt="n" ) ←軸を書かない!両軸消すには axes=FALSE > axis( 1, at=1:5, labels=c(1, "hoge", 100, "hage", 5) ) グリッドを描く > plot( hoge, panel.first = grid( x, y ) ) x で x軸から生える毛の数 y で y軸から生える毛の数 3次元プロットの例 > x <- seq(-1,1,by=0.1) > y <- seq(-1,1,by=0.1) > f <- function(x,y) x^2+y^2 > z <- outer(x,y,f) # zを各(x,y)の組み合わせに対して計算 > z[is.na(z)] <- 1 # NAがあれば,1で置き換える > persp(x, y, z, theta=30, phi=30, ylabel="x'") 別の3次元プロット > library(lattice) > cloud(z ~ x * y) 色付きの散布図 > lev <- 20 # 階調 > suf <- findInterval( z, seq( min(z), max(z), length.out=lev ) ) > plot( x, y, col=rainbow(lev)[suf] ) ''コピペ用'' plot.col <- function( x, y, z, lev=20 ){ suf <- findInterval( z, seq( min(z), max(z), length.out=lev ) ) plot( x, y, col=rainbow(lev)[suf], pch=19 ) }