失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 绘制动态心形图案::R语言绘制心形图

绘制动态心形图案::R语言绘制心形图

时间:2024-04-25 22:42:48

相关推荐

绘制动态心形图案::R语言绘制心形图

原始方程源于此贴一楼:直通车

整理修改后:

被窝修改成这样:

x<-seq(-1.1,1.1,length = 3000)rep<-30y<-matrix(,3000,rep) #创建矩阵yx<-matrix(,3000,rep) #创建矩阵xx<-matrix(,3000,rep) #创建矩阵c<-seq(0,1,length=rep) #立体效果for (i in 1:rep)for (p in 1:3000){y[p,i]<-(1-(x[p])^2)^(1/2)+((x[p])^2)^(1/4)+c[i]yx[p,i]<--(1-(x[p])^2)^(1/2)+((x[p])^2)^(1/4)+c[i]xx[,i]<-x}for (q in 2:15){par(bg="pink")plot(main="中国(标题可更改)", c(rev(xx),xx),c(rev(y),yx),type='l',xlim = c(-1,1),xlab = "LOVE YOU",col.lab="red",font.lab=9,cex.lab=3,ylab = "",axes=F,col=q)Sys.sleep(1)} #Sys.sleep(1)动态效果

据说笛卡尔死前寄出的最后一封信,里面只有短短的一行:r=a(1&#x2212;sin&#x03B8;)'>r=a(1−sinθ) r=a(1−sinθ) ,这就是有名的心形函数。情人节将至,我用R语言的grid包画了几幅图片,希望借此平台赠与我相恋五年的男友,也希望与各位统计爱好者分享快乐。

首先,我利用grid.lines()把转化为直角坐标系的(x, y)两两相连围成心形,构建了一个heart function作为基本图形。

x=16(sint)3y=13cost&#x;5cos2t&#x;2cos3t&#x;cos4t'>xy =16(sint) 3 =13cost–5cos2t–2cos3t–cos4t x=16(sint)3y=13cost–5cos2t–2cos3t–cos4t

为了得到嵌套心形图案,我使用了grid包创建了多个viewport。viewport是grid包的一个重要特色,此概念类似于photoshop的图层。

创建一个viewport,我们需要设置它的位置、长度和宽度,下图虚线实际上并不出现在R的output里面,但这个矩形区域图层会成为接下来画图的区域。构建了新的viewport以后,我们可以用pushViewport()命令锁定该图层,使之成为目标区域。我们也可以构建多个viewport,几个viewport之间可以通过命令相互切换。

例如,在第一个图层的基础上在新建一个图层,调整新图层的长度与宽度使之稍微小于第一个图层, 用pushViewport()锁定新图层,再调用一次心形函数,以此类推,循环创建多个嵌套图层,并依次在各个图层上画心形函数,于是我们可以得到一系列嵌套的心形。

此外,grid包允许我们对图形进行复制、旋转、放缩等修改。要旋转心形函数,我们并不需要修改函数本身,而是可以通过旋转viewport的方式旋转我们所需要绘制的图形。设置新viewport,调整angle函数,那么在此图层下绘制的任何图形将会被旋转。

利用viewport对图形进行修改,我们可以绘制各种有趣的图形pattern,本人只是grid包的初学者,如有偏颇之处望多多包涵。最后,祝愿大家情人节快乐!

以下是“情人节礼物”的代码:直通车

如果觉得《绘制动态心形图案::R语言绘制心形图》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。