seaborn
プロット(具体的にはkdeplot
)をクリップするのに問題があります。this example in the matplotlib
docsとかなり単純だと思います。例えば海賊プロットのクリップを設定する
、以下のコード:以下の出力で
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
fig = plt.figure()
ax = fig.add_subplot(111, frameon=False, xticks=[], yticks=[])
random_points = np.array([p for p in np.random.random(size=(100, 2)) if 0 < p[0] < 1 and 0 < p[1] < 1])
kde = sns.kdeplot(random_points[:,0], random_points[:,1], ax=ax)
xmin, xmax = kde.get_xlim()
ymin, ymax = kde.get_ylim()
patch = mpl.patches.Circle(((xmin + xmax)/2, (ymin + ymax)/2), radius=0.4)
ax.add_patch(patch)
kde.set_clip_path(patch)
結果:
IはKDE輪郭線が外部に表示されないように、この結果をクリップしたいです円の私はそれまでこれを行う方法を見つけていない...これは可能ですか?
これは賢いと魔術時にタッチを超えました!非常に小さな変更(この場合は、必要な 'sns.reset_orig()'を追加する)がこのコードを破って元の結果に戻すことに注意してください。これは 'facecolor'が実行時に' seaborn'スタイルの(完全に透明な)元のスタイルと '(1,1,1,1)'で '(1,1,1,0)であるためです。後者を手動で固定することで問題が解決されます。 –
このソリューションは、より複雑な形状で動作するように拡張できますか? 3つ以上の面を持つポリゴンの場合、コードはそのままでは失敗します。次の画像は何が起こるかを示しています:この場合は 'facecolor = 'yellow''の間に' edgecolor =' steelblue''ですが、あなたが見ることができるようにanti-shapeは何とかそれを飲み込むように見えます:http:// i。 imgur.com/gS5v8dk.png。 –