本稿はRを学び始めたプログラマが残したメモ書きです。文系路線で生きてきたのでこの手のジャンルは不得手です。
5回目の今回は、円や多角形などの基本的な図形を描いてみました。
Rのバージョンは2.10.1。
x <- seq(-pi, pi, length=100) plot( sin(x) ) plot( cos(x) ) plot( tan(x) )
# 2〜4次関数 x <- seq(-10, 10, length=100) plot(x^2, type="l") plot(x^3, type="l") plot(x^4, type="l") # -2〜-4次関数 plot(x^-2, type="l") plot(x^-3, type="l") plot(x^-4, type="l")
plot.new() plot.window(xlim=c(-1, 1), ylim=c(-1, 1)) # 円 x <- seq(-pi, pi, length=100) lines(cos(x), sin(x)) # 楕円 lines(cos(x) * 0.7, sin(x)) # 半円(横) x <- seq(0, pi, length=100) lines(c(-1, cos(x)), c(0, sin(x))) # 半円(縦) x <- seq(-pi / 2, pi / 2, length=100) lines(c(0, cos(x)), c(1, sin(x)))
plot.new() plot.window(xlim=c(-1, 1), ylim=c(-1, 1)) # 正三角形 x <- seq(-pi * 1.5, pi * 0.5, length=4) lines(cos(x), sin(x)) # 五角形 x <- seq(-pi * 1.5, pi * 0.5, length=6) lines(cos(x), sin(x)) # 六角形 x <- seq(-pi * 1.5, pi * 0.5, length=7) lines(cos(x), sin(x)) # 五角形を天地逆にして重ねてみる x <- seq(-pi * 1.5, pi * 0.5, length=6) lines(cos(x), sin(x)) x <- seq(-pi * 0.5, pi * 1.5, length=6) lines(cos(x), sin(x))
plot.new() plot.window(xlim=c(-3, 3), ylim=c(-3, 3)) x <- seq(-pi, pi, length=100) # 5枚の花びら(cos(x), sin(x)の円を回りつつ、cos(x*4), sin(x*4)で5つ円を描く) lines( cos(x) + cos(x*4), sin(x) - sin(x*4) ) # 花びらが重ならない様にズラしてみる lines( 1.1*cos(x) + cos(x*4), 1.1*sin(x) - sin(x*4) ) # 7枚 lines( cos(x) + cos(x*6), sin(x) - sin(x*6) )
五芒星は正五角形を頂点から、1 - 3 - 5 - 2 - 4 - 1の順で線を引けば良いので、-pi〜piの指定を2倍にして頂点を5個にすれば描ける。六芒星は正三角形を天地逆で2つ描く。
plot.new() plot.window(xlim=c(-1, 1), ylim=c(-1, 1)) # 五芒星 x <- seq(-pi * 1.5, pi * 2.5, length=6) lines(cos(x), sin(x)) # 六芒星 x <- seq(-pi * 0.5, pi * 1.5, length=4) lines(cos(x), sin(x)) x <- seq(-pi * 1.5, pi * 0.5, length=4) lines(cos(x), sin(x))
plot.new() plot.window(xlim=c(-5, 5), ylim=c(-5, 5)) # 星の原型になる図形(これから良い感じの点を拾えば星になる) x <- seq(-pi, pi, length=100) lines( 2.5*cos(x) + cos(x*4), 2.5*sin(x) - sin(x*4) ) # 上の図形から11個点を結ぶと星になる x <- seq(-pi, pi, length=11) lines( 2.5*cos(x) + cos(x*4), 2.5*sin(x) - sin(x*4) ) # 傾いてるので微調整(おそらくもっと良い描き方がある) x1 <- seq(pi * -0.025, 2 * pi + pi * -0.025, length=11) x2 <- x1 + pi / 8 lines( 2.5*cos(x2) + cos(x1*4), 2.5*sin(x2) - sin(x1*4) )
# 正弦波 x <- seq(0, 4 * pi, length=100) plot(sin(x) ^ 2, type="l", ylim=c(-2, 3)) # のこぎり波 x <- seq(-pi, pi, length=100) plot( 2 * (x - floor(x)) - 1, type="l", ylim=c(-2, 3) ) # 矩形波的なもの x <- seq(0, 8 * pi, length=1000) plot (floor( sin(x)+1 ), type="l", ylim=c(-2, 3))