用python繪制櫻花樹(shù)
黑夜可能漫長(zhǎng),但總會(huì)迎來(lái)溫暖的陽(yáng)光,三月如期而至,武大的櫻花又一次盛開(kāi)。那么今天就一起來(lái)看看怎樣在python中畫一棵美麗的櫻花樹(shù)~
說(shuō)到用python畫畫,那當(dāng)然就是小烏龜Turtle庫(kù)了,為啥是turtle呢,想象一個(gè)小烏龜,在一個(gè)橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)位置開(kāi)始,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動(dòng),從而在它爬行的路徑上繪制了圖形。
一、安裝與引入
安裝沒(méi)有什么難度直接pip安裝就可以
pip install turtle
可使用以下3種方法引入:
二、使用
turtle庫(kù)使用起來(lái)也很簡(jiǎn)單,主要就是利用幾個(gè)核心的控制代碼
turtle.goto(x,y):直接跳轉(zhuǎn)到(x,y)點(diǎn),以繪圖窗口中心為原點(diǎn), turtle.fd(d):以當(dāng)前方向,往前行進(jìn)d像素。 turtle.bk(d):保持當(dāng)前方向不變,往后退行d像素。 turtle.circle(r,angle):以r為半徑圓的angle角度旋轉(zhuǎn)。 turtle.penup():抬筆 turtle.pendown():落筆 urtle.left(angle):向左旋轉(zhuǎn)angle度。 turtle.right(angle):向右旋轉(zhuǎn)angle度。
比如繪制樹(shù)干部分的代碼可以這樣寫
def Tree(branch, t): time.sleep(0.0005) if branch > 3: if 6 <= branch <= 12: # if random.randint(0, 2) == 0: #隨機(jī)繪制 t.color('snow') #設(shè)置顏色 else: t.color('lightcoral') # 樹(shù)葉顏色 t.pensize(branch / 3) elif branch < 6: if random.randint(0, 1) == 0: t.color('snow') else: t.color('lightcoral') # t.pensize(branch / 2) else: t.color('sienna') # 赭(zhě)色 t.pensize(branch / 10) # 6 t.forward(branch) a = 1.5 * random.random() t.right(20 * a) b = 1.5 * random.random() Tree(branch - 10 * b, t) t.left(40 * a) Tree(branch - 10 * b, t) t.right(20 * a) t.up() t.backward(branch) t.down()
而寫字的部分就不用一筆一劃的去繪制,直接使用turtle.write()就可以在指定位置寫上你需要的文字。
write(arg,move=false,align='left',font=('arial',8,'normal')) #arg--將寫入Turtle繪畫屏幕的文字。 #align(可選)--“左(left)”、“中(center)”或“右(right)”之一。 #font(可選)--(fontname、fontsize、fonttype)。
那么來(lái)看看最后效果吧!
完整源碼:
import turtle as T import random import time # 畫櫻花的軀干(60,t) def Tree(branch, t): time.sleep(0.0005) if branch > 3: if 8 <= branch <= 12: if random.randint(0, 2) == 0: t.color('snow') # 白 else: t.color('lightcoral') # 淡珊瑚色 t.pensize(branch / 3) elif branch < 8: if random.randint(0, 1) == 0: t.color('snow') else: t.color('lightcoral') # 淡珊瑚色 t.pensize(branch / 2) else: t.color('sienna') # 赭(zhě)色 t.pensize(branch / 10) # 6 t.forward(branch) a = 1.5 * random.random() t.right(20 * a) b = 1.5 * random.random() Tree(branch - 10 * b, t) t.left(40 * a) Tree(branch - 10 * b, t) t.right(20 * a) t.up() t.backward(branch) t.down() # 掉落的花瓣 def Petal(m, t): for i in range(m): a = 200 - 400 * random.random() b = 10 - 20 * random.random() t.up() t.forward(b) t.left(90) t.forward(a) t.down() t.color('lightcoral') # 淡珊瑚色 t.circle(1) t.up() t.backward(a) t.right(90) t.backward(b) # 繪圖區(qū)域 t = T.Turtle() # 畫布大小 w = T.Screen() t.hideturtle() # 隱藏畫筆 t.getscreen().tracer(5, 0) w.screensize(bg='wheat') # wheat小麥 t.left(90) t.up() t.backward(150) t.down() t.color('sienna') # 畫櫻花的軀干 Tree(60, t) # 掉落的花瓣 Petal(200, t) w.exitonclick()
以上就是用python繪制櫻花樹(shù)的詳細(xì)內(nèi)容,更多關(guān)于python繪圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python訪問(wèn)MongoDB,并且轉(zhuǎn)換成Dataframe的方法
今天小編就為大家分享一篇Python訪問(wèn)MongoDB,并且轉(zhuǎn)換成Dataframe的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01使用Python實(shí)現(xiàn)遺傳算法的完整代碼
這篇文章主要介紹了使用Python實(shí)現(xiàn)遺傳算法,其本質(zhì)是一種高效、并行、全局搜索的方法,自適應(yīng)的控制搜索過(guò)程以求得最優(yōu)解,需要的朋友可以參考下2023-03-03pycharm終端無(wú)法激活conda環(huán)境的解決辦法
如果您在PyCharm終端中無(wú)法激活conda環(huán)境,可能是由于PyCharm沒(méi)有正確配置conda解釋器,這篇文章主要給大家介紹了關(guān)于pycharm終端無(wú)法激活conda環(huán)境的解決辦法,需要的朋友可以參考下2023-09-09解決Windows下python和pip命令無(wú)法使用的問(wèn)題
這篇文章主要介紹了解決Windows下python和pip命令無(wú)法使用的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python3連接Mysql8.0遇到的問(wèn)題及處理步驟
最近在使用Python開(kāi)發(fā)系統(tǒng),需連接mysql數(shù)據(jù)庫(kù),我用的是Python3連接MySQL8.0,其中老是報(bào)錯(cuò),怎么解決這個(gè)問(wèn)題呢,下面小編給大家?guī)?lái)了Python3連接Mysql8.0遇到的問(wèn)題及處理步驟,需要的朋友參考下吧2020-02-02python3 sorted 如何實(shí)現(xiàn)自定義排序標(biāo)準(zhǔn)
這篇文章主要介紹了python3 sorted 如何實(shí)現(xiàn)自定義排序標(biāo)準(zhǔn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03