在matplotlib中使用子图时获取空图

时间:2018-08-23 01:37:29

标签: python pandas numpy matplotlib

我在matplotlib中使用子图时遇到问题。使用子图时,我得到的是空白图。我的实现有什么问题?

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

fig = plt.figure(figsize=(15,20))
ax = 1
for column in passenger_train_df.columns.values.tolist():
    if column != 'Survived':
        fig.add_subplot(4, 3, ax)
        if column == 'Age':
            age_binned=pd.cut(passenger_train_df['Age'], 10)
            age_binned.sort_values(inplace=True)
            table= pd.crosstab(age_binned, passenger_train_df['Survived'])
        elif column == 'Fare':
            fare_binned=pd.cut(passenger_train_df['Fare'], 10)
            fare_binned.sort_values(inplace=True)
            table= pd.crosstab(fare_binned, passenger_train_df['Survived'])
        else:
            table= pd.crosstab(passenger_train_df[column], passenger_train_df['Survived'])
        table.div(table.sum(1).astype(float), axis=0).plot(kind='bar', stacked=True)
        ax+=1

1 个答案:

答案 0 :(得分:0)

您需要返回使用fig.add_subplot(4, 3, ax)时创建的轴。然后,您需要将此作为参数传递给plot函数:

因此将fig.add_subplot(4, 3, ax)更改为

axes = fig.add_subplot(4, 3, ax)

然后在进行绘制时,使用axes作为参数传递ax=

table.div(table.sum(1).astype(float), axis=0).plot(kind='bar', stacked=True, ax=axes)