如何在for循环内绘制多个子图

时间:2020-05-28 10:52:03

标签: python python-3.x

所以我的样本DF是这样的:

data = pd.DataFrame({
    'ID':[1,1,2,2,2],
    'gender':['male', 'female', 'male', 'female', 'female'],
    'Dependents':['yes', 'no', 'yes', 'no', 'yes'],
    'PhoneService': ['yes', 'no', 'yes', 'no', 'yes'],
    'InternetService':['yes', 'no', 'yes', 'no', 'yes'] 
    'Churn':['yes', 'no', 'yes', 'no', 'yes']
})

在类似的是/否值中还有大约15个其他列。

我想用x轴上的yes / no值相对于y轴上的Churn列绘制我的每一列的堆积条形图,以显示x轴上每个类别的Yes / No计数。

我可以这样绘制一个堆积的条形图:

gender_plot = data.groupby(['gender', 'Churn']).size().reset_index().pivot(columns='Churn', index='gender', values=0)
gender_plot.plot.bar(stacked=True)

我还可以使用for循环遍历需要绘制的所有列,如下所示:

columns_to_visualise = ['gender', 'Partner', 'Dependents', 'PhoneService', 'MultipleLines', 'InternetService', 'OnlineSecurity', 'OnlineBackup', 
                        'DeviceProtection', 'TechSupport', 'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling', 'PaymentMethod', 'SeniorCitizen']

for column in columns_to_visualise:
    plot_data = data.groupby([column, 'Churn']).size().reset_index().pivot(columns='Churn', index=column, values=0)
    plot_data.plot.bar(stacked=True, rot = 45)

plt.show()

显然,上述for循环的输出结果导致所有条形图都绘制在单独的轴上。

我尝试使用以前的几篇SO帖子的帮助将它们绘制在子图上,但没有一个帮助我

如何更新代码以将这16个堆积的条形图绘制为单个4x4图形中的子图?

谢谢

0 个答案:

没有答案