<ul>
<li>最简单的方法是用<a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.pivot_table.html" rel="nofollow noreferrer">^{<cd1>}</a>重塑数据帧,然后用<a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html" rel="nofollow noreferrer">^{<cd2>}</a>指定<code>kind='bar'</code>和<code>stacked=True</code>进行绘图。
<ul>
<li>要记住的重要一点是将数据格式化为绘图API的正确格式</李>
</ul>
</li>
<li>使用<code>pandas v1.2.4</code>和<code>matplotlib v3.3.4</code>(<code>matplotlib</code>由<code>pandas</code>作为依赖项导入)</李>
</ul>
<pre class="lang-py prettyprint-override"><code>import seaborn as sns # used for the titanic data
import pandas as pd
# load the two necessary column
df = sns.load_dataset('titanic').loc[:, ['sex', 'survived']]
# create a pivot table
dfp = df.pivot_table(index='sex', columns=['survived'], aggfunc=len)
# display(dfp)
survived 0 1
sex
female 81 233
male 468 109
# plot the dataframe
dfp.plot(kind='bar', stacked=True, ylabel='Counts', xlabel='Gender',
title='Survival Status Count by Gender', rot=0)
</code></pre>
<p><a href="https://i.stack.imgur.com/F4N9Y.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/F4N9Y.png" alt="enter image description here"/></a></p>
<ul>
<li>我不建议使用堆叠钢筋,因为区分和比较每个类别的值比较困难</李>
</ul>
<pre class="lang-py prettyprint-override"><code>dfp.plot(kind='bar', stacked=False, ylabel='Counts', xlabel='Gender',
title='Survival Status Count by Gender', rot=0)
</code></pre>
<p><a href="https://i.stack.imgur.com/rb4RL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/rb4RL.png" alt="enter image description here"/></a></p>