我有麻煩削波seaborn
圖(一kdeplot
,特別是)因爲我以爲會是每this example in the matplotlib
docs相當簡單的剪輯。設置在seaborn情節
例如,下列代碼:
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)
結果在下面的輸出:
我想使得KDE輪廓線不會出現外剪裁此結果的圈子。到目前爲止,我還沒有找到辦法做到這一點......這可能嗎?
這超出了巧妙而在巫術觸動!請注意,一個非常小的改變(在這種情況下,添加'sns.reset_orig()',我需要))打破這個代碼並返回到我們原來的結果;這是因爲在原始樣式(完全透明)和''seaborn'樣式的'(1,1,1,1)'中,'facecolor'在運行時爲'(1,1,1,0)'。手動修復後者可解決問題。 –
該解決方案可以擴展到更復雜的形狀嗎?如果多邊形的邊長超過三條,代碼就會失敗。下圖顯示了發生了什麼:在這種情況下'facecolor ='yellow'' while'edgecolor ='steelblue'',但正如你所看到的反形狀似乎吞嚥自己(?)莫名其妙:http://我。 imgur.com/gS5v8dk.png。 –