matplotlibclabelのset_clip_pathが正しくクリッピングされない

ブライアン

ポリゴンパスにクリップされた等高線図を作成しています。

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import numpy as np

fig = plt.figure()
axes = plt.subplot()
x,y = np.meshgrid( np.linspace(-10,10,51), np.linspace(-10,10,51) ) 
z = np.sin(np.sqrt(x**2+y**2))
CS =  axes.contour(x, y, z, np.linspace(-1,1,11) )
axes.set_aspect('equal')

# clip contours by polygon
radius = 8
t = np.linspace(0,2*np.pi,101)
x_bound,y_bound = radius*np.sin(t),radius*(np.cos(t)+0.1*(np.cos(7*t)))
clip_map = Polygon(list(zip(x_bound,y_bound)),fc='#EEEEEE',ec='none')
axes.add_patch(clip_map)
for collection in CS.collections:
    collection.set_clip_path(clip_map)

# label the contours    
CLB = axes.clabel(CS, colors='black')
for text_object in CLB:
    text_object.set_clip_path(clip_map) # Doesn't do anything!

plt.show()

驚いたことに、エラーを返さないメソッドをText持つオブジェクトがあるにもかかわらず、ラベルはクリップされset_clip_pathません。

ラベルがクリップされていない等高線図

灰色のポリゴン領域の外側にラベルをクリップするにはどうすればよいですか?X位置とY位置を手動で検索し、ポリゴン内のポイントを計算set_visible = Falseし、Textアイテムごとに使用する必要がありますか?このコードがそのまま機能しないのはなぜですか?matplotlibバージョン1.5.1とpython3.5.1を使用しています。

ブライアン

誰かがいつか同じ問題に遭遇した場合に備えて、shapelyパッケージを使用してポリゴン内のポイントをテストし、Textオブジェクトの可視性の状態を設定する必要があるという解決策を次に示します。それは仕事set_clip_pathを成し遂げますが、Textオブジェクトを直接操作するために使用することができれば素晴らしいでしょう

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import numpy as np
from shapely.geometry import Polygon as ShapelyPolygon
from shapely.geometry import Point as ShapelyPoint

fig = plt.figure()
axes = plt.subplot()
x,y = np.meshgrid( np.linspace(-10,10,51), np.linspace(-10,10,51) ) 
z = np.sin(np.sqrt(x**2+y**2))
CS =  axes.contour(x, y, z, np.linspace(-1,1,11) )
axes.set_aspect('equal')

# clip contours by polygon
radius = 8
t = np.linspace(0,2*np.pi,101)
x_bound,y_bound = radius*np.sin(t),radius*(np.cos(t)+0.1*(np.cos(7*t)))
clip_map = Polygon(list(zip(x_bound,y_bound)),fc='#EEEEEE',ec='none')
axes.add_patch(clip_map)
for collection in CS.collections:
    collection.set_clip_path(clip_map)

# label the contours    
CLB = axes.clabel(CS, colors='black')
clip_map_shapely = ShapelyPolygon(clip_map.get_xy())

for text_object in CLB:
    if not clip_map_shapely.contains(ShapelyPoint(text_object.get_position())):
        text_object.set_visible(False)

plt.show()

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SVGclipPathが正しくクリッピングされない

分類Dev

SVGclipPathが正しくクリッピングされない

分類Dev

css clip-pathプロパティとして参照されると、SVGクリッピングパスが正しく配置されません。

分類Dev

テクスチャ画像が正しくマッピングされない

分類Dev

ScrapySpiderが正しくスクレイピングされない

分類Dev

配列の形状がnumpymeshgridに正しくマッピングされない

分類Dev

StripeElementクイックスタートの例が正しくレンダリングされない

分類Dev

OpenGL-glDrawElementsを使用してテクスチャが正しくマッピングされていない

分類Dev

テクスチャが正方形に正しくマッピングされていないWebGL

分類Dev

JDBCTemplateブールがBeanPropertyRowMapperで正しくマッピングされない

分類Dev

AHKのコピーアンドペーストスクリプトが正しくコピーされない

分類Dev

法線マッピングが正しく表示されないのはなぜですか?

分類Dev

クワッドの透明ピクセルが1つの角度からのみ正しくレンダリングされるのはなぜですか?

分類Dev

Spring コントローラーのリクエストマッピングが正しく機能しない

分類Dev

フレックスdivでパグスパンが正しくレンダリングされない

分類Dev

JSON応答で最初の列挙値が正しくマッピングされない

分類Dev

Vaadinチェックボックスが正しくレンダリングされない

分類Dev

Androidのナンバーピッカーが正しく表示されない

分類Dev

Safariでフレックスグリッドが正しくレンダリングされない-フレックスアイテムに高さがない

分類Dev

jQueryステップが正しくレンダリングされない

分類Dev

ng-repeatのIEドロップダウンのAngularjsが正しくレンダリングされない

分類Dev

テクスチャが正しくレンダリングされない(OpenGL)

分類Dev

OpenGLESテクスチャが正しくレンダリングされない

分類Dev

UrxvtのNeovimの配色が正しくレンダリングされない

分類Dev

グローバル ポインター (リンク リストの先頭) が正しく更新されない

分類Dev

ハイストックX軸(日付値)が正しくレンダリングされない

分類Dev

ネストされたスクロールウィンドウ内のスティッキーHTML要素が正しくレンダリングされない

分類Dev

フラッターの画像のビューで画像が正しくレンダリングされない

分類Dev

FPDFが正しくレンダリングされない

Related 関連記事

  1. 1

    SVGclipPathが正しくクリッピングされない

  2. 2

    SVGclipPathが正しくクリッピングされない

  3. 3

    css clip-pathプロパティとして参照されると、SVGクリッピングパスが正しく配置されません。

  4. 4

    テクスチャ画像が正しくマッピングされない

  5. 5

    ScrapySpiderが正しくスクレイピングされない

  6. 6

    配列の形状がnumpymeshgridに正しくマッピングされない

  7. 7

    StripeElementクイックスタートの例が正しくレンダリングされない

  8. 8

    OpenGL-glDrawElementsを使用してテクスチャが正しくマッピングされていない

  9. 9

    テクスチャが正方形に正しくマッピングされていないWebGL

  10. 10

    JDBCTemplateブールがBeanPropertyRowMapperで正しくマッピングされない

  11. 11

    AHKのコピーアンドペーストスクリプトが正しくコピーされない

  12. 12

    法線マッピングが正しく表示されないのはなぜですか?

  13. 13

    クワッドの透明ピクセルが1つの角度からのみ正しくレンダリングされるのはなぜですか?

  14. 14

    Spring コントローラーのリクエストマッピングが正しく機能しない

  15. 15

    フレックスdivでパグスパンが正しくレンダリングされない

  16. 16

    JSON応答で最初の列挙値が正しくマッピングされない

  17. 17

    Vaadinチェックボックスが正しくレンダリングされない

  18. 18

    Androidのナンバーピッカーが正しく表示されない

  19. 19

    Safariでフレックスグリッドが正しくレンダリングされない-フレックスアイテムに高さがない

  20. 20

    jQueryステップが正しくレンダリングされない

  21. 21

    ng-repeatのIEドロップダウンのAngularjsが正しくレンダリングされない

  22. 22

    テクスチャが正しくレンダリングされない(OpenGL)

  23. 23

    OpenGLESテクスチャが正しくレンダリングされない

  24. 24

    UrxvtのNeovimの配色が正しくレンダリングされない

  25. 25

    グローバル ポインター (リンク リストの先頭) が正しく更新されない

  26. 26

    ハイストックX軸(日付値)が正しくレンダリングされない

  27. 27

    ネストされたスクロールウィンドウ内のスティッキーHTML要素が正しくレンダリングされない

  28. 28

    フラッターの画像のビューで画像が正しくレンダリングされない

  29. 29

    FPDFが正しくレンダリングされない

ホットタグ

アーカイブ