matplotlib.path
#
Matplotlib 全体で使用されるポリラインを処理するためのモジュール。
Matplotlib でのポリライン処理の主要なクラスはPath
. ほとんどすべてのベクター描画Path
では、描画パイプラインのどこかで s が使用されます。
インスタンスPath
自体を描画することはできませんがArtist
、 や などの一部のサブクラスを使用するPathPatch
とPathCollection
、簡単に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
コードを指定する必要があります。コードの種類は次のとおりです。
STOP
1 頂点 (無視)パス全体の終わりのマーカー (現在は不要で無視されます)
MOVETO
1頂点ペンを手に取り、与えられた頂点に移動します。
LINETO
1頂点現在の位置から指定された頂点まで線を引きます。
CURVE3
1 つのコントロール ポイント、1 つのエンドポイント指定された制御点を使用して、現在の位置から指定された終点まで 2 次ベジエ曲線を描画します。
CURVE4
2 つのコントロール ポイント、1 つのエンドポイント指定された制御点を使用して、現在の位置から指定された終点までの 3 次ベジエ曲線を描画します。
CLOSEPOLY
1 頂点 (無視)現在のポリラインの始点まで線分を描画します。
コードが 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が指定されていない場合、スプライン セグメントの数はtheta1とtheta2の間のデルタに基づいて決定されます。
Masionobe, L. 2003.ポリライン、2 次または 3 次ベジエ曲線を使用して楕円弧を描く.
- classmethod circle ( center = (0.0, 0.0) , radius = 1.0 , readonly = False ) [source] #
Path
指定された半径と中心の円を表す を返します。- パラメータ:
- 中心(float、float)、デフォルト: (0, 0)
円の中心。
- 半径フロート、デフォルト: 1
円の半径。
- 読み取り専用ブール
Path インスタンスの作成時に、作成されたパスに「読み取り専用」引数を設定するかどうか。
ノート
で説明されているように、円は 8 つの 3 次ベジエ曲線を使用して近似されます。
ランカスター、ドン。4 つのベジエ 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
- プロパティ コード#
Path
1D numpy 配列としてのコードのリスト。各コードは、、、、、またはのSTOP
いずれ かMOVETO
です。複数の頂点 (と) に対応するコードの場合、 と の長さが常に同じになるように、そのコードが繰り返されます。LINETO
CURVE3
CURVE4
CLOSEPOLY
CURVE3
CURVE4
vertices
codes
- 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だけシフトされたパス) にある点については定義されていません。
囲まれた領域がない場合、つまりすべての頂点が直線上にある場合、結果は未定義です。
半径のシフトにより境界線が互いに交差し始めた場合、結果が正しいとは限りません。
- get_extents ( transform = None , ** kwargs ) [source] #
パスの Bbox を取得します。
- パラメータ:
- 変換matplotlib.transforms.Transform、オプション
エクステントを計算する前にパスに適用する変換 (存在する場合)。
- **kwargs
に転送されました
iter_bezier
。
- 戻り値:
- matplotlib.transforms.Bbox
パスの範囲 Bbox([[xmin, ymin], [xmax, ymax]])
- 静的 ハッチ(ハッチパターン、密度= 6 ) [ソース] #
指定されたハッチング指定子、hatchpatternは、繰り返されるハッチング パターンで使用できるパスを生成します。密度は、単位正方形あたりの行数です。
- 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)
vertices
code
Path
さらに、このメソッドは、多くの標準的なクリーンアップとパスへの変換を提供できます。
- パラメータ:
- 変換なしまたは
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
.
- プロパティ 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_regular_asterisk ( numVertices ) [ソース] #
Path
指定された numVertices と 1.0 の半径を持ち、(0, 0) を中心とする単位の通常のアスタリスクのa を返します。
- classmethod unit_regular_polygon ( numVertices ) [ソース] #
外接円が (0, 0) を中心とする半径 1.0 を持つように、指定されたnumVertices
Path
を持つ単位正多角形のインスタンスを返します。
- classmethod unit_regular_star ( numVertices , innerCircle = 0.5 ) [ソース] #
Path
(0, 0) を中心とする、指定された numVertices と半径 1.0 のユニット規則星のa を返します。
- classmethod wedge ( theta1 , theta2 , n = None ) [source] #
角度theta1から theta2 (度単位)
Path
までの単位円くさびのa を返します。theta2はアンラップされ、360 度内で最も短いウェッジを生成します。つまり、theta2 > theta1 + 360 の場合、くさびはtheta1 からtheta2 - 360 になり、完全な円と余分な重なりはありません。
nが指定されている場合、それは作成するスプライン セグメントの数です。nが指定されていない場合、スプライン セグメントの数はtheta1とtheta2の間のデルタに基づいて決定されます。
Path.arc
使用される近似のリファレンスについては、 を参照してください。
- matplotlib.path。get_path_collection_extents ( master_transform、 paths、 transforms、 offsets、 offset_transform ) [source] #
a にある一連
Path
の 、Transform
s オブジェクト、およびオフセットを指定するとPathCollection
、それらすべてをカプセル化するバウンディング ボックスが返されます。- パラメータ:
ノート
パス、変換、およびオフセットを組み合わせる方法は、コレクションの場合と同じ方法に従います。それぞれが個別に反復処理されるため、パスが 3 つ、変換が 2 つ、オフセットが 1 つある場合、それらの組み合わせは次のようになります。
(A, A, A), (B, B, A), (C, A, A)