日々のつれづれ

不惑をむかえ戸惑いを隠せない男性の独り言

直線とか曲線とか・その2

少し変わった直線は、それなりに手続きが必要になるわけですが、

  • matlines関数

matplot関数のlines関数になります。

> dat <- t(sapply(seq(1,8,2),function(i) sort(rnorm(4,mean=i,sd=1))))
> dimnames(dat) <- lapply(c("row","col"),paste,1:4)
> 
> jpeg("matlines.jpeg")
> matplot(dat,pch=20,col=1,xaxt="n")
> matlines(dat)
> mtext(rownames(dat),at=1:4,side=1)
> dev.off()


とか、

> dat <- sapply(c(1,3),function(i) rnorm(20,mean=5,sd=i))
> colnames(dat) <- paste("row",1:2)
> 
> jpeg("matlines2.jpeg")
> boxplot(dat,col=rgb(r=1:2/2,g=2:1/2,b=0,a=.5),outline=FALSE)
> matpoints(t(dat),pch=20,col=1)
> matlines(t(dat),col=1,lty=ifelse(apply(dat,1,diff)>0,1,2))
> dev.off()


とか、になると思う。

  • arrows関数

その名の通り、矢印を描く関数です。

> jpeg("arrows.jpg")
> plot(NA,xlim=c(0,6),ylim=c(0,5))
> # 矢尻のあり、なし
> arrows(x0=0,y0=1,x1=1,y1=1,code=0)
> arrows(x0=0,y0=2,x1=1,y1=2,code=1)
> arrows(x0=0,y0=3,x1=1,y1=3,code=2)
> arrows(x0=0,y0=4,x1=1,y1=4,code=3)
> 
> # 矢尻の角度
> arrows(x0=2,y0=1,x1=3,y1=1,angle=0) # code=0とは違い、矢尻を描いている
> arrows(x0=2,y0=2,x1=3,y1=2,angle=30) # default
> arrows(x0=2,y0=3,x1=3,y1=3,angle=60)
> arrows(x0=2,y0=4,x1=3,y1=4,angle=90)
> arrows(x0=5,y0=1,x1=4,y1=1,angle=120)
> arrows(x0=5,y0=2,x1=4,y1=2,angle=-30) # angle=30と同じ
> 
> # 矢尻の長さ
> arrows(x0=5,y0=3,x1=4,y1=3,length=.5)
> arrows(x0=5,y0=4,x1=4,y1=4,length=1.5)
> dev.off()

もちろん引数lwd、引数colも使えます。