官术网_书友最值得收藏!

2.5 用Matplotlib繪圖

按照先前的承諾,最后向你展示如何使用Matplotlib“從頭開始”編寫本章中使用的繪圖函數(shù)。用pip安裝Matplotlib后,就可以導(dǎo)入它(以及它的一些子模塊)了。

import matplotlib
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection

PolygonPointsArrowSegment類并無特別之處,只是保存了為其構(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)行建模。

主站蜘蛛池模板: 福贡县| 南开区| 资源县| 漳州市| 额济纳旗| 江油市| 平南县| 盐山县| 阜宁县| 岚皋县| 金湖县| 阳城县| 定襄县| 新密市| 绥化市| 肥西县| 封丘县| 苏州市| 大兴区| 同心县| 西和县| 定西市| 全州县| 神木县| 南召县| 保康县| 柘城县| 天水市| 南华县| 文成县| 肥乡县| 五家渠市| 余庆县| 五家渠市| 新密市| 盐源县| 新巴尔虎右旗| 南靖县| 宜兰县| 三原县| 漳浦县|