绘制动态心形图案::R语言绘制心形图
原始方程源于此貼一樓:直通車
整理修改后:
被窩修改成這樣:
據說笛卡爾死前寄出的最后一封信,里面只有短短的一行:r=a(1−sinθ)'>r=a(1?sinθ) r=a(1?sinθ) ,這就是有名的心形函數。情人節將至,我用R語言的grid包畫了幾幅圖片,希望借此平臺贈與我相戀五年的男友,也希望與各位統計愛好者分享快樂。
首先,我利用grid.lines()把轉化為直角坐標系的(x, y)兩兩相連圍成心形,構建了一個heart function作為基本圖形。
x=16(sint)3y=13cost–5cos2t–2cos3t–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语言绘制心形图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: z3 android os,尖Phone
- 下一篇: ckfinder java 配置_JAV