matplotlib.path#

Matplotlib 全体で使用されるポリラインを処理するためのモジュール。

Matplotlib でのポリライン処理の主要なクラスはPath. ほとんどすべてのベクター描画Pathでは、描画パイプラインのどこかで s が使用されます。

インスタンスPath自体を描画することはできませんがArtist、 や などの一部のサブクラスを使用するPathPatchPathCollection、簡単にPath 視覚化できます。

クラス matplotlib.path。パス(頂点コード= None _interpolation_steps = 1 closed = False readonly = False ) [source] #

拠点:object

接続されていない、閉じている可能性のある一連の線分と曲線セグメント。

基礎となるストレージは、2 つの並列の numpy 配列で構成されています。

  • vertices : 頂点の Nx2 float 配列

  • コード: パス コードの N 長の uint8 配列、または None

これら 2 つの配列の最初の次元の長さは常に同じです。たとえば、3 次曲線を表すには、3 つの頂点と 3 つのCURVE4コードを指定する必要があります。

コードの種類は次のとおりです。

  • STOP1 頂点 (無視)

    パス全体の終わりのマーカー (現在は不要で無視されます)

  • MOVETO1頂点

    ペンを手に取り、与えられた頂点に移動します。

  • LINETO1頂点

    現在の位置から指定された頂点まで線を引きます。

  • CURVE31 つのコントロール ポイント、1 つのエンドポイント

    指定された制御点を使用して、現在の位置から指定された終点まで 2 次ベジエ曲線を描画します。

  • CURVE42 つのコントロール ポイント、1 つのエンドポイント

    指定された制御点を使用して、現在の位置から指定された終点までの 3 次ベジエ曲線を描画します。

  • CLOSEPOLY1 頂点 (無視)

    現在のポリラインの始点まで線分を描画します。

コードが None の場合、 のMOVETO後に一連の が続くものとして解釈されLINETOます。

Path オブジェクトのユーザーは、頂点とコードの配列に直接アクセスしないでください。代わりに、iter_segmentsまたはcleanedを使用して頂点/コードのペアを取得する必要があります。これは特に、コードが None の場合を一貫して処理するのに役立ちます。

Path オブジェクトの一部の動作は、rcParams によって制御できます。キーが「path.」で始まる rcParams を参照してください。

ノート

頂点とコードの配列は不変として扱う必要があります。データが変更されても変更されない、コンストラクターで事前に作成された多くの最適化と仮定があります。

指定された頂点とコードで新しいパスを作成します。

パラメータ:
頂点(N, 2) 配列のようなもの

配列、マスクされた配列、またはペアのシーケンスとしてのパス頂点。マスクされた値がある場合は NaN に変換され、Agg PathIterator やiter_segments().

コード配列のようなものまたはなし、オプション

パスのコードを表す長さ N の整数配列。None でない場合、コードは頂点と同じ長さでなければなりません。None の場合、頂点は一連の線分として扱われます。

_interpolation_steps int、オプション

Polar などの特定のプロジェクションへのヒントとして使用され、描画の直前にこのパスを線形補間する必要があります。この属性は主に実装の詳細であり、一般的な使用は意図されていません。

閉じたブール値、オプション

コードが None で、closed が True の場合、頂点は閉じたポリゴンの線分として扱われます。最後の頂点は無視されることに注意してください (対応するコードが CLOSEPOLY に設定されるため)。

読み取り専用ブール値、オプション

パスを不変の方法で動作させ、頂点とコードを読み取り専用配列として設定します。

クローズポリ= 79 #
CURVE3 = 3 #
CURVE4 = 4 #
LINETO = 2 #
MOVETO = 1 #
NUM_VERTICES_FOR_CODE = {0: 1、1 : 1、2 : 1、3 : 2、4 : 3、79 : 1} #

コードが期待する頂点の数にパス コードをマッピングするディクショナリ。

停止= 0 #
classmethod arc ( theta1 , theta2 , n = None , is_wedge = False ) [source] #

角度theta1から theta2 (度単位)Pathまでの単位円弧のa を返します。

theta2はアンラップされ、360 度内で最短の円弧を生成します。つまり、theta2 > theta1 + 360 の場合、円弧はtheta1から theta2 - 360 までであり、完全な円と余分なオーバーラップではありません。

nが指定されている場合、それは作成するスプライン セグメントの数です。nが指定されていない場合、スプライン セグメントの数はtheta1theta2の間のデルタに基づいて決定されます。

classmethod circle ( center = (0.0, 0.0) , radius = 1.0 , readonly = False ) [source] #

Path指定された半径と中心の円を表す を返します。

パラメータ:
中心(float、float)、デフォルト: (0, 0)

円の中心。

半径フロート、デフォルト: 1

円の半径。

読み取り専用ブール

Path インスタンスの作成時に、作成されたパスに「読み取り専用」引数を設定するかどうか。

ノート

で説明されているように、円は 8 つの 3 次ベジエ曲線を使用して近似されます。

clean ( transform = None , remove_nans = False , clip = None , * , Simple = False , Curves = False , stroke_width = 1.0 , snap = False , sketch = None ) [source] #

パラメータに従って頂点とコードが消去された新しいパスを返します。

こちらもご覧ください

Path.iter_segments

キーワード引数の詳細については。

clip_to_bbox ( bbox , inside = True ) [ソース] #

指定された境界ボックスへのパスをクリップします。

パスは、1 つ以上の閉じたポリゴンで構成されている必要があります。このアルゴリズムは、閉じていないパスに対して正しく動作しません。

内部がの場合Trueはボックスの内側にクリップし、そうでない場合はボックスの外側にクリップします。

コードタイプ#

のエイリアスuint8

プロパティ コード#

Path1D numpy 配列としてのコードのリスト。各コードは、、、、、またはのSTOPいずれ かMOVETOです。複数の頂点 (と) に対応するコードの場合、 と の長さが常に同じになるように、そのコードが繰り返されます。LINETOCURVE3CURVE4CLOSEPOLYCURVE3CURVE4verticescodes

contains_path (パス変換=なし) [ソース] #

この (閉じた) パスが指定されたパスを完全に含んでいるかどうかを返します。

transformが でない場合None、パスは包含をチェックする前に変換されます。

contains_point (ポイント,変換=なし,半径= 0.0 ) [ソース] #

パスで囲まれた領域に指定されたポイントが含まれているかどうかを返します。

パスは常に閉じたものとして扱われます。つまり、最後のコードが CLOSEPOLY でない場合、最後の頂点を最初の頂点に接続する暗黙のセグメントが想定されます。

パラメータ:
ポイント(フロート、フロート)

チェックする点 (x, y)。

変換matplotlib.transforms.Transform、オプション

そうでない場合Noneポイントselfはtransform によって変換されたものと比較されます。つまり、正しいチェックのために、transformはパスをpointの座標系に変換する必要があります。

半径フロート、デフォルト: 0

pointの座標でパスにマージンを追加します。パスは接線方向にradius/2だけ延長されます。つまり、radiusの線幅でパスを描画する場合、線上のすべての点は依然として領域に含まれていると見なされます。逆に、負の値は領域を縮小します。仮想線上のポイントは領域外と見なされます。

戻り値:
ブール

ノート

現在のアルゴリズムにはいくつかの制限があります。

  • 結果は、正確に境界 (つまり、radius/2だけシフトされたパス) にある点については定義されていません。

  • 囲まれた領域がない場合、つまりすべての頂点が直線上にある場合、結果は未定義です。

  • 半径のシフトにより境界線が互いに交差し始めた場合、結果が正しいとは限りません。

contains_points (ポイント,変換=なし,半径= 0.0 ) [ソース] #

パスで囲まれた領域に指定されたポイントが含まれているかどうかを返します。

パスは常に閉じたものとして扱われます。つまり、最後のコードが CLOSEPOLY でない場合、最後の頂点を最初の頂点に接続する暗黙のセグメントが想定されます。

パラメータ:
ポイント(N, 2) 配列

チェックするポイント。列には x 値と y 値が含まれます。

変換matplotlib.transforms.Transform、オプション

そうでない場合Noneポイントselfはtransform によって変換されたものと比較されます。つまり、正しいチェックのために、変換はパスをの座標系に変換する必要があります。

半径フロート、デフォルト: 0

pointsの座標でパスにマージンを追加します。パスは接線方向にradius/2だけ延長されます。つまり、radiusの線幅でパスを描画する場合、線上のすべての点は依然として領域に含まれていると見なされます。逆に、負の値は領域を縮小します。仮想線上のポイントは領域外と見なされます。

戻り値:
長さ N のブール配列

ノート

現在のアルゴリズムにはいくつかの制限があります。

  • 結果は、正確に境界 (つまり、radius/2だけシフトされたパス) にある点については定義されていません。

  • 囲まれた領域がない場合、つまりすべての頂点が直線上にある場合、結果は未定義です。

  • 半径のシフトにより境界線が互いに交差し始めた場合、結果が正しいとは限りません。

コピー( ) [ソース] #

Pathソースと頂点とコードを共有するのシャロー コピーを返しますPath

deepcopy ( memo = None ) [source] #

のディープコピーを返しPathます。Pathソースが読み取り専用であっても、読み取り専用にはなりませんPath

get_extents ( transform = None , ** kwargs ) [source] #

パスの Bbox を取得します。

パラメータ:
変換matplotlib.transforms.Transform、オプション

エクステントを計算する前にパスに適用する変換 (存在する場合)。

**kwargs

に転送されましたiter_bezier

戻り値:
matplotlib.transforms.Bbox

パスの範囲 Bbox([[xmin, ymin], [xmax, ymax]])

静的 ハッチ(ハッチパターン密度= 6 ) [ソース] #

指定されたハッチング指定子、hatchpatternは、繰り返されるハッチング パターンで使用できるパスを生成します。密度は、単位正方形あたりの行数です。

補間(ステップ) [ソース] #

長さ N x ステップにリサンプリングされた新しいパスを返します。

LINETO 以外のコードは正しく処理されません。

intersects_bbox ( bbox ,塗りつぶし= True ) [ソース] #

このパスが指定された と交差するかどうかを返しBboxます。

塗りつぶしが True の場合、パスが を完全に囲んでいる (つまり、パスが塗りつぶされているものとして扱われる) 場合にも True を返しますBbox

境界ボックスは常に塗りつぶされていると見なされます。

intersects_path (その他塗りつぶし= True ) [ソース] #

このパスが別の指定されたパスと交差するかどうかを返します。

Filled が True の場合、一方のパスがもう一方のパスを完全に囲んでいる (つまり、パスが塗りつぶされているものとして扱われる) 場合にも True を返します。

iter_bezier ( ** kwargs ) [ソース] #

Path 内の各ベジエ曲線 (線を含む) を反復処理します。

パラメータ:
**kwargs

に転送されましたiter_segments

利回り:
B matplotlib.bezier.BezierSegment

現在のパスを構成するベジェ曲線。特に、独立した点は次数 0 のベジェ曲線であり、線は次数 1 のベジェ曲線 (2 つの制御点を持つ) であることに注意してください。

コードパス.code_type

返される曲線の種類を記述するコード。Path.MOVETO、Path.LINETO、Path.CURVE3、Path.CURVE4 は、(それぞれ) 1、2、3、および 4 つの制御点を持つベジェ曲線に対応します。Path.CLOSEPOLY は、現在のストロークの始点/終点に基づいて制御点が正しく選択された Path.LINETO です。

iter_segments ( transform = None , remove_nans = True , clip = None , snap = False , stroke_width = 1.0 , Simple = None , Curves = True , sketch = None ) [source] #

パス内のすべての曲線セグメントを反復します。

各反復は、ペアを返します。ここ で、 は 1 ~ 3 の座標ペアのシーケンスで、はコードです。(vertices, code)verticescodePath

さらに、このメソッドは、多くの標準的なクリーンアップとパスへの変換を提供できます。

パラメータ:
変換なしまたはTransform

None でない場合、指定されたアフィン変換がパスに適用されます。

remove_nansブール値、オプション

パスからすべての NaN を削除し、MOVETO コマンドを使用してそれらをスキップするかどうか。

clip None または (float、float、float、float)、オプション

None でない場合は、パスをクリップする四角形を定義する 4 つのタプル (x1、y1、x2、y2) でなければなりません。

snap None またはブール値、オプション

True の場合、すべてのノードをピクセルにスナップします。False の場合、それらをスナップしません。None の場合、パスに x 軸または y 軸に平行なセグメントのみが含まれ、それらが 1024 を超えない場合にスナップします。

stroke_width float、オプション

描画されるストロークの幅 (パスのスナップに使用)。

Noneまたはブール値、オプション

外観に影響しない頂点を削除してパスを単純化するかどうか。None の場合は、 should_simplify属性を使用します。rcParams["path.simplify"](デフォルト: True) およびrcParams["path.simplify_threshold"](デフォルト: )も参照してください0.111111111111

曲線のブール値、オプション

True の場合、曲線セグメントは曲線セグメントとして返されます。False の場合、すべての曲線が線分に変換されます。

スケッチなしまたはシーケンス、オプション

None でない場合は、スケッチ パラメータを表す形式 (スケール、長さ、ランダム性) の 3 タプルである必要があります。

classmethod make_compound_path ( * args ) [ソース] #

オブジェクトのリストから複合パスを作成しPathます。Path.STOPすべてのコントロール ポイントを盲目的に削除します。

classmethod make_compound_path_from_polys ( XY ) [ソース] #

複合パス オブジェクトを作成して、辺の数が等しい多数のポリゴンを描画します。XY は、頂点の (numpolys x numsides x 2) numpy 配列です。戻りオブジェクトは Path.

(ソースコードpng )

../_images/histogram_path_00_00.png
プロパティ 読み取り専用#

TruePathが読み取り専用の場合。

プロパティ should_simplify #

True頂点配列を単純化する必要がある場合。

プロパティ simple_threshold #

頂点が簡略化されるピクセル差の割合。

to_polygons (変換=なし= 0高さ= 0 closed_only = True ) [ソース] #

このパスをポリゴンまたはポリラインのリストに変換します。各ポリゴン/ポリラインは、頂点の Nx2 配列です。つまり、各ポリゴンにはMOVETO指示も曲線もありません。これは、複合パスまたはベジエ曲線をサポートしていないバックエンドで表示する場合に便利です。

高さが両方ともゼロでない場合、(0, 0)、(幅、高さ) の外側の頂点が切り取られるように線が単純化されます。

closed_onlyが(デフォルト) の場合True、最後のポイントが最初のポイントと同じである閉じたポリゴンのみが返されます。パス内の閉じていないポリラインは、明示的に閉じられます。closed_onlyがの場合False、パス内の閉じていないポリゴンはすべて閉じていないポリゴンとして返され、最後のポイントを最初のポイントと同じに設定することによって、閉じたポリゴンが明示的に閉じられて返されます。

変換(変換) [ソース] #

パスの変換されたコピーを返します。

こちらもご覧ください

matplotlib.transforms.TransformedPath

変換された結果をキャッシュし、変換が変更されたときに自動的に更新する特殊なパス クラス。

classmethod unit_circle ( ) [ソース] #

Path単位円の読み取り専用を返します。

ほとんどの場合、Path.circle()あなたが望むものになります。

classmethod unit_circle_righthalf ( ) [ソース] #

Path単位円の右半分のa を返します。

Path.circle使用される近似のリファレンスについては、 を参照してください。

classmethod unit_rectangle ( ) [ソース] #

Path(0, 0) から (1, 1) までの単位矩形のインスタンスを返します。

classmethod unit_regular_asterisk ( numVertices ) [ソース] #

Path指定された numVertices と 1.0 の半径を持ち、(0, 0) を中心とする単位の通常のアスタリスクのa を返します。

classmethod unit_regular_polygon ( numVertices ) [ソース] #

外接円が (0, 0) を中心とする半径 1.0 を持つように、指定されたnumVerticesPathを持つ単位正多角形のインスタンスを返します。

classmethod unit_regular_star ( numVertices , innerCircle = 0.5 ) [ソース] #

Path(0, 0) を中心とする、指定された numVertices と半径 1.0 のユニット規則星のa を返します。

プロパティ の頂点#

PathNx2 numpy 配列としての頂点のリスト。

classmethod wedge ( theta1 , theta2 , n = None ) [source] #

角度theta1から theta2 (度単位)Pathまでの単位円くさびのa を返します。

theta2はアンラップされ、360 度内で最も短いウェッジを生成します。つまり、theta2 > theta1 + 360 の場合、くさびはtheta1 からtheta2 - 360 になり、完全な円と余分な重なりはありません。

nが指定されている場合、それは作成するスプライン セグメントの数です。nが指定されていない場合、スプライン セグメントの数はtheta1theta2の間のデルタに基づいて決定されます。

Path.arc使用される近似のリファレンスについては、 を参照してください。

matplotlib.path。get_path_collection_extents ( master_transform paths transforms offsets offset_transform ) [source] #

a にある一連Pathの 、Transforms オブジェクト、およびオフセットを指定するとPathCollection、それらすべてをカプセル化するバウンディング ボックスが返されます。

パラメータ:
master_transformTransform

すべてのパスに適用されるグローバル変換。

のパスリストPath
リストを変換しますAffine2D
オフセット(N, 2) 配列のようなもの
オフセット変換Affine2D

パスをオフセットする前にオフセットに適用される変換。

ノート

パス変換、およびオフセットを組み合わせる方法は、コレクションの場合と同じ方法に従います。それぞれが個別に反復処理されるため、パスが 3 つ、変換が 2 つ、オフセットが 1 つある場合、それらの組み合わせは次のようになります。

(A, A, A), (B, B, A), (C, A, A)