- 程序員數(shù)學(xué):用Python學(xué)透線性代數(shù)和微積分
- (美)保羅·奧蘭德
- 488字
- 2022-01-10 14:44:12
2.5 用Matplotlib繪圖
按照先前的承諾,最后向你展示如何使用Matplotlib“從頭開始”編寫本章中使用的繪圖函數(shù)。用pip安裝Matplotlib后,就可以導(dǎo)入它(以及它的一些子模塊)了。
import matplotlib
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
Polygon
、Points
、Arrow
和Segment
類并無特別之處,只是保存了為其構(gòu)造函數(shù)傳遞的數(shù)據(jù)。例如,Points
類只包含一個(gè)構(gòu)造函數(shù),它接收并存儲(chǔ)一個(gè)向量列表和一個(gè)color
關(guān)鍵字參數(shù)。
class Points():
def __init__(self, vectors, color=black):
self.vectors = list(vectors)
self.color = color
draw
函數(shù)首先計(jì)算出圖形的大小,然后逐一繪制傳給它的每個(gè)對(duì)象。例如,要在Points
對(duì)象所代表的平面上畫點(diǎn),draw
函數(shù)會(huì)使用Matplotlib的散點(diǎn)繪制功能。
def draw(*objects, ...
# ... ←---- 這里省略了一些初始化設(shè)置
for object in objects: ←---- 遍歷傳入的對(duì)象
# ...
elif type(object) == Points: ←---- 如果當(dāng)前對(duì)象是Points類的實(shí)例,則使用Matplotlib的散點(diǎn)函數(shù)為其包含的所有向量繪制對(duì)應(yīng)的點(diǎn)
xs = [v[0] for v in object.vectors]
ys = [v[1] for v in object.vectors]
plt.scatter(xs, ys, color=object.color)
# ...
箭頭、線段和多邊形的處理方式大致相同,使用不同的Matplotlib函數(shù)繪制幾何圖像。可以在源代碼文件vector/drawing.py中找到所有這些函數(shù)的實(shí)現(xiàn)。本書將全程使用Matplotlib來繪制數(shù)據(jù)和數(shù)學(xué)函數(shù),在使用過程中,我會(huì)定期幫你復(fù)習(xí)它的功能。
現(xiàn)在你已經(jīng)掌握了二維向量的相關(guān)知識(shí),可以探索更高的維度了。有了第三個(gè)維度,就可以完整描述我們生活的世界了。在下一章中,你將學(xué)習(xí)如何用代碼對(duì)三維對(duì)象進(jìn)行建模。
推薦閱讀
- Spring 5.0 Microservices(Second Edition)
- 實(shí)用防銹油配方與制備200例
- 樂高機(jī)器人設(shè)計(jì)技巧:EV3結(jié)構(gòu)設(shè)計(jì)與編程指導(dǎo)
- HBase從入門到實(shí)戰(zhàn)
- C語言程序設(shè)計(jì)實(shí)踐教程
- Windows內(nèi)核編程
- Microsoft Dynamics AX 2012 R3 Financial Management
- 好好學(xué)Java:從零基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)
- 快速入門與進(jìn)階:Creo 4·0全實(shí)例精講
- Learning Splunk Web Framework
- Java程序設(shè)計(jì)教程
- WCF技術(shù)剖析(卷1)
- 寫給青少年的人工智能(Python版·微課視頻版)
- 啊哈C語言!:邏輯的挑戰(zhàn)(修訂版)
- ASP.NET Core and Angular 2