我正在使用Spyder并在一个循环中绘制Seaborn计数图。问题是这些图似乎是在同一个对象中相互重叠的,我最终只看到了该图的最后一个实例。如何在控制台中一个接一个地查看每个图?
for col in df.columns:
if ((df[col].dtype == np.float64) | (df[col].dtype == np.int64)):
i=0
#Later
else :
print(col +' count plot \n')
sns.countplot(x =col, data =df)
sns.plt.title(col +' count plot')
答案 0 :(得分:11)
您可以在每个循环中创建一个新图形,也可以在不同的轴上绘制。这是代码,每个循环创建新的数字。它还可以更有效地抓取int和float列。
df1 = df.select_dtypes([np.int, np.float])
for i, col in enumerate(df1.columns):
plt.figure(i)
sns.countplot(x=col, data=df1)
答案 1 :(得分:8)
在致电sns.countplot
之前,您需要创建一个新的数字。
假设您已导入import matplotlib.pyplot as plt
,只需在plt.figure()
之前添加sns.countplot(...)
例如:
import matplotlib
import matplotlib.pyplot as plt
import seaborn
for x in some_list:
df = create_df_with(x)
plt.figure() #this creates a new figure on which your plot will appear
seaborn.countplot(use_df);
答案 2 :(得分:2)
回答评论中的问题:如何在单个图中绘制所有内容?我还展示了一种在控制台中查看图的另一种方法。
import matplotlib.pyplot as plt
df1 = df.select_dtypes([np.int, np.float])
n=len(df1.columns)
fig,ax = plt.subplots(n,1, figsize=(6,n*2), sharex=True)
for i in range(n):
plt.sca(ax[i])
col = df1.columns[i]
sns.countplot(df1[col].values)
ylabel(col);
注意: