天天看點

python畫圓形螺旋線_中秋節到了,送你一個Python做的Crossin牌“月餅”

python畫圓形螺旋線_中秋節到了,送你一個Python做的Crossin牌“月餅”

明天是難得一見的國慶中秋雙節合一,在這裡除了祝大家節日快樂之外,我們還要送上一個“月餅”——當然這個月餅是不能吃的,因為它是用python做的。先給大家看一下效果圖。

python畫圓形螺旋線_中秋節到了,送你一個Python做的Crossin牌“月餅”

圖1. 月餅效果圖

畫這樣一個月餅,其實不需要太多的代碼,筆者隻用了不到50行代碼,而且用的是我們經常用到的繪圖庫matplotlib,這對于我們大部分人來說是很容易上手的,下面筆者就詳細介紹一下怎麼畫這樣一個月餅。

首先導入各種需要的庫:

import            

然後設定3個變量,這3個變量的用途到後面會有解釋:

length            

接下來我們要畫12條弧線,這12條弧線是月餅邊緣的花紋:

arc1            

看到這裡估計很多人懵逼了,代碼是不是有點多了?實際上這些弧線都是來自于同一個Arc類,它們的用法都是一樣的,隻不過部分參數不同,是以我們隻要掌握一個,其他的全都會了。這裡筆者就用arc1來說明一下:

arc1            

其中

[0, length]

是這個Arc弧線的圓心,因為這個Arc類是一個橢圓形的一部分,是以其包含圓心、橫軸、縱軸等參數,

length

變量就是arc1圓心的縱坐标,

width=2*r

height=2*r

就說明這個橢圓的縱軸和橫軸長度相等,其是一個圓,而不是橢圓,變量

r

就是這個圓的半徑。

angle=0

就是我們不需要對這個圓進行旋轉,

theta1=30

theta2=150

是指明這個弧線的起始角度和終止角度,這裡的角度分别是

30度

150度

。而

ec='orange'

linewidth=4

分别指邊線的顔色和線條寬度,顔色我們設為

橙色

寬度為4

。而這些弧線的效果圖如圖2所示,在圖中筆者标出了arc1、arc5和arc9這3條弧線的位置,所有弧線按照

逆時針方向

排列。這些位置大同小異,大家隻要計算好其各自的位置參數就行,這裡就不再贅述了。

python畫圓形螺旋線_中秋節到了,送你一個Python做的Crossin牌“月餅”

圖2. 弧線效果圖

然後我們再畫一個圓,這個圓是月餅的主體部分,其圓心和整個月餅的中心是重合的,圓心位置我們選在了坐标原點,代碼如下:

circle            

這裡變量R就是這個大圓的半徑,邊線顔色設定為橙色,表面顔色設為白色。其效果如圖3所示。

python畫圓形螺旋線_中秋節到了,送你一個Python做的Crossin牌“月餅”

圖3. 大圓效果圖

接下來我們再畫上一些花紋,這些花紋主要由8個扇形組成,其中有4個大的扇形和4個小的扇形,代碼如下:

wedge1            

這裡wedge1、wedge3、wedge5、wedge7是大扇形,wedge2、wedge4、wedge6、wedge8是小扇形,一個大扇形嵌套一個小扇形,其中wedge1嵌套wedge2,wedge3嵌套wedge4,以此類推。Wedge這個類和前面Arc有些類似,不過Wedge是圓的一部分,以wedge1為例:

wedge1            

其中

[-2, 2]

是這個Wedge所代表的圓的圓心,

R-5

是其半徑,

90

180

分别代表起始和終止角度,

ec

fc

linewidth

這些都和前面Arc類的用法相似,這8個扇形的效果圖如圖4所示。在圖中筆者标出了wedge1、wedge2、wedge5和wedge6的位置,所有扇形按照逆時針方向放置。

python畫圓形螺旋線_中秋節到了,送你一個Python做的Crossin牌“月餅”

圖4. 扇形效果圖

最後我們再把公衆号“

CROSSIN

”的名稱加上,因為代碼不多,是以把剩餘所有代碼都寫在這裡:

art_list            

art_list是我們設定的一個list變量,裡面放有arc1到arc12這12個圖形,然後再把circle以及8個扇形都加進去。

ax.set_aspect('equal')

是設定整個圖形x軸和y軸同比例,

for a in art_list: ax.add_patch(a)

是把art_list中所有圖形加入到畫布當中。而

plt.text

這行代碼中,-18和-2.5是這個text的左下角的坐标,

fontfamily

fontsize

分别是文字的字型和大小,

bbox

是設定text邊框的格式,這些參數也都和前面講過的很多參數差不多,這裡不再贅述。

plt.ylim

plt.xlim

是設定整個畫布的坐标範圍。最終效果如圖1所示。

當然我們也可以改變圖檔的顔色,比如設定成藍色的,如圖5所示,這個完全可以根據個人愛好而定。

python畫圓形螺旋線_中秋節到了,送你一個Python做的Crossin牌“月餅”

圖5. 藍色月餅圖

筆者在這裡用了不到50行代碼就畫出了一個月餅,其中還有不少複用的,是以核心隻有幾個繪圖函數,了解起來并不難。你也可以自己動手試一試,定制一塊你自己的月餅。

最後再次祝大家,中秋快樂!國慶快樂!

作者:tyran

完整代碼: https:// gitee.com/crossin/snipp et/tree/master/mooncake

----

擷取更多教程和案例,

歡迎搜尋及關注:

Crossin的程式設計教室

這裡還有更多精彩。一起學,走得遠!