我在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
答案 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)