用python繪制櫻花樹
黑夜可能漫長,但總會迎來溫暖的陽光,三月如期而至,武大的櫻花又一次盛開。那么今天就一起來看看怎樣在python中畫一棵美麗的櫻花樹~
說到用python畫畫,那當(dāng)然就是小烏龜Turtle庫了,為啥是turtle呢,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標(biāo)系原點,(0,0)位置開始,它根據(jù)一組函數(shù)指令的控制,在這個平面坐標(biāo)系中移動,從而在它爬行的路徑上繪制了圖形。
一、安裝與引入
安裝沒有什么難度直接pip安裝就可以
pip install turtle
可使用以下3種方法引入:

二、使用
turtle庫使用起來也很簡單,主要就是利用幾個核心的控制代碼
turtle.goto(x,y):直接跳轉(zhuǎn)到(x,y)點,以繪圖窗口中心為原點, turtle.fd(d):以當(dāng)前方向,往前行進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度。
比如繪制樹干部分的代碼可以這樣寫
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 6 <= branch <= 12: #
if random.randint(0, 2) == 0: #隨機繪制
t.color('snow') #設(shè)置顏色
else:
t.color('lightcoral') # 樹葉顏色
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)。
那么來看看最后效果吧!

完整源碼:
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繪制櫻花樹的詳細(xì)內(nèi)容,更多關(guān)于python繪圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
下載與當(dāng)前Chrome對應(yīng)的chromedriver.exe(用于python+selenium)
這篇文章主要介紹了下載與當(dāng)前Chrome對應(yīng)的chromedriver.exe(用于python+selenium),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01
python ceiling divide 除法向上取整(或小數(shù)向上取整)的實例
今天小編就為大家分享一篇python ceiling divide 除法向上取整 (或小數(shù)向上取整)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python通過cookie模擬已登錄狀態(tài)的初步研究
對于那些需要在登錄環(huán)境下進行的爬蟲操作,模擬登陸或偽裝已登錄狀態(tài)是一個剛性需求。這篇文章主要介紹了python通過cookie模擬已登錄狀態(tài)的相關(guān)資料,需要的朋友可以參考下2016-11-11
python使用in操作符時元組和數(shù)組的區(qū)別分析
有時候要判斷一個數(shù)是否在一個序列里面,這時就會用到in運算符來判斷成員資格,如果條件為真時,就會返回true,條件為假時,返回一個flase。這樣的運算符叫做布爾運算符,其真值叫做布爾值。2015-05-05
Python之虛擬環(huán)境virtualenv,pipreqs生成項目依賴第三方包的方法
今天小編就為大家分享一篇Python之虛擬環(huán)境virtualenv,pipreqs生成項目依賴第三方包的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python3 利用requests 庫進行post攜帶賬號密碼請求數(shù)據(jù)的方法
今天小編就為大家分享一篇Python3 利用requests 庫進行post攜帶賬號密碼請求數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10

