我創(chuàng)建了一堆地塊,并希望根據(jù)它們的特征對其中的一些進行子集化。如何遍歷命名空間并列出其中的一些或全部?甚至可能使用列表推導對其中一些進行操作?我知道這可以通過數(shù)據(jù)幀輕松完成,例如使用迭代器迭代不同數(shù)據(jù)幀的問題的一些答案繪圖的一個實際示例可能是關閉一些繪圖,例如在使用子繪圖時如何在 jupyter 中停止繪圖打印兩次?為了防止重復的子圖設置,您必須運行plt.close(g.fig)where是許多圖之一。g設置:import seaborn as snsimport pandas as pdimport matplotlib.pyplot as pltplt.rcParams['figure.figsize'] = [12, 8]df = sns.load_dataset("exercise")f, axes = plt.subplots(2, 2)g=sns.catplot(x="time", y="pulse", hue="kind", data=df, ax=axes[0, 0])h=sns.catplot(x="time", y="pulse", hue="kind", data=df, ax=axes[0, 1])i=sns.catplot(x="time", y="pulse", hue="kind", data=df, ax=axes[1, 0])j=sns.catplot(x="time", y="pulse", hue="kind", data=df, ax=axes[1, 1])在此示例中,如何在不顯式命名每個繪圖的情況下循環(huán) i for[g, h, i, j]并運行?plt.close(i.fig)我試過的:vars()除其他外,跑步將回歸'g', 'h', 'i', j。跑步vars()['g']會給我<seaborn.axisgrid.FacetGrid at 0x1c1bc940>。所以我認為一種選擇是在 [elem for elem in vars() if elem in 'seaborn.axisgrid.FacetGrid']不使用特定名稱的情況下運行以訪問每個地塊。但這會回歸,['g', 'i', 't', 's', 'ax']雖然跑步確實會回歸。hjvars()['h']<seaborn.axisgrid.FacetGrid at 0x1bfa74a8>在isseaborn.axisgrid.FacetGrid的輸出中似乎沒有任何痕跡。和的輸出是長浮點數(shù)組。vars()['ax']<matplotlib.axes._subplots.AxesSubplot at 0x1c1bce10>vars()['t']vars()['t']我想我可能以完全錯誤的方式處理這件事。任何其他建議都會很棒!
1 回答

炎炎設計
TA貢獻1808條經(jīng)驗 獲得超4個贊
因此,為了清楚起見,我對它的seaborn工作原理一無所知。我能夠使用您的設置代碼執(zhí)行以下操作 -
var_dict = vars().copy()
var_keys = var_dict.keys()
plots_names = [x for x in var_keys if isinstance(var_dict[x], sns.axisgrid.FacetGrid)]
print(plots_names )
我必須制作一個副本,vars()因為它會隨著您迭代它而改變。使用內(nèi)置函數(shù),我在副本中isinstance()查找所有實例并返回列表中匹配的所有鍵。這是輸出 -seaborn.axisgrid.FacetGridvars()
['g', 'h', 'i', 'j']
添加回答
舉報
0/150
提交
取消