天天看點

matplotlib---5.Path

<code>1.matplotlib.patch基本用法</code>

<code>matplotlib.patch</code>對象底層的對象就是<code>Path</code>。它的基本用法如下:

matplotlib---5.Path

2.<code>matplotlib.path.Path(verts,codes)</code>

<code>PATH</code>對象的建立通過<code>matplotlib.path.Path(verts,codes)</code>建立

參數:

<code>verts</code>:<code>PATH</code>的頂點。這些頂點必須構成一個封閉曲線。其中每個頂點必須指定<code>x</code>坐标和<code>y</code>坐标。

<code>codes</code>:訓示如何使用這些<code>PATH</code>頂點。它與<code>verts</code>關系是一一對應的。有如下指令:

<code>Path.STOP</code>:結束<code>path</code>的标記

<code>Path.MOVETO</code>:畫筆提起并移動到指定的頂點

<code>Path.LINETO</code>:畫筆畫直線,從<code>current position</code>到指定的頂點

<code>Path.CURVE3:</code>畫筆畫二階貝塞爾曲線,從<code>current position</code>到指定的<code>end point</code>, 其中還有一個參數是指定的<code>control point</code>

<code>Path.CURVE4</code>:畫筆畫三階貝塞爾曲線,從<code>current position</code>到指定的<code>end point</code>, 其中還有兩個參數是指定的<code>control points</code>

<code>Path.CLOSEPOLY</code>:指定的<code>point</code>參數被忽略。該指令畫一條線段, 從<code>current point</code>到<code>start point</code>

可以通過<code>matplotlib.patches.PathPatch(path)</code>來建構一個<code>PathPatch</code>對象,然後通過<code>Axes.add_patch(patch)</code>向<code>Axes</code>添加<code>PathPatch</code>對象.這樣就添加了<code>Path</code>到圖表中。

舉例:

matplotlib---5.Path

 

3.在<code>matplotlib</code>中所有簡單的<code>patch primitive</code>,如<code>Rectangle</code>、<code>Circle</code>、<code>Polygon</code>等等,都是由簡單的<code>Path</code>來實作的。而建立大量的<code>primitive</code>的函數如<code>hist()</code>和<code>bar()</code>(他們建立了大量的<code>Rectanle</code>)可以使用一個<code>compound path</code>來高效地實作。

但是實際上<code>bar()</code>建立的是一系列的<code>Rectangle</code>,而沒有用到<code>compound path</code>,這是由于曆史原因,是曆史遺留問題。(<code>bar()</code>函數先于<code>Coupound Path</code>出現)

下面是一個<code>Compound Path</code>的例子:

在建立<code>Axes</code>或者<code>SubPlot</code>時,可以給構造函數提供一個<code>axisbg</code>參數來指定背景色

繼續閱讀