在pyplot

时间:2017-04-30 22:50:56

标签: python-3.x matplotlib

我目前正在浏览Kaggle Titanic Machine Learning并使用http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb来解决这个问题,因为我是Python的相对初学者。我以为我理解了前面几个步骤正在做什么,我正在尝试通过制作一个包含多个图的图来重新创建一个更早的步骤。我似乎无法让这些情节真正显示出来。

这是我的代码:

`
import pandas as pd
import numpy as np
import pylab as plt

train=pd.read_csv("train.csv")

#Set the global default size of matplotlib figures
plt.rc('figure', figsize=(10, 5))

#Size of matplotlib figures that contain subplots
figsize_with_subplots = (10, 10)

# Size of matplotlib histogram bins
bin_size = 10
females_df = train[train['Sex']== 'female']
print("females_df", females_df)
females_xt = pd.crosstab(females_df['Pclass'],train['Survived'])
females_xt_pct = females_xt.div(females_xt.sum(1).astype(float), axis = 0)

males = train[train['Sex'] == 'male']
males_xt = pd.crosstab(males['Pclass'], train['Survived'])
males_xt_pct= males_xt.div(males_xt.sum(1).astype(float), axis = 0)


plt.figure(5)
plt.subplot(221)
females_xt_pct.plot(kind='bar', title='Female Survival Rate by Pclass')
plt.xlabel('Passenger Class')
plt.ylabel('Survival Rate')

plt.subplot(222)

males_xt_pct.plot(kind='bar', title= 'Male Survival Rate by Pclass')
plt.xlabel('Passenger Class')
plt.ylabel('Survival Rate')
`

这将分别显示两个空白图(一个位于221位置,然后是222位置中新图形的下一个图),然后是另一个实际上在最后工作的情节。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

为了将pandas图绘制到以前创建的子图中,您可以使用pandas绘图函数的ax参数。

ax=plt.subplot(..)
df.plot(..., ax=ax)

因此,在这种情况下,代码可能看起来像

plt.figure(5)
ax=plt.subplot(221)
females_xt_pct.plot(kind='bar', title='Female Survival Rate by Pclass',ax=ax)

ax2=plt.subplot(222)
males_xt_pct.plot(kind='bar', title= 'Male Survival Rate by Pclass',ax=ax2)

enter image description here