擅长:python、mysql、java
<p>直方图的箱子将最小和最大x之间的范围划分为相等的部分。两个集合具有不同的最小值和最大值。此外,您的数据是离散的,因此箱子边界最好放在整数值之间。可以显式设置存储单元:sns.distplot(…,存储单元=np.arange(-0.5,86,5)),用于这两种类型</p>
<p>然而,一种更简单的方法是利用Seaborn的<code>hue=</code>参数使Seaborn负责分组并一次性创建两个直方图</p>
<p>注意<code>sns.distplot</code>在最新版本(0.11)中已被<code>sns.histplot</code>替换。如果希望两个直方图都堆叠起来,可以添加参数<code>multiple='stack'</code></p>
<p>为了获得一个独立的示例,下面的代码使用标准的Seaborn Titanic数据集,它使用小写的列名</p>
<pre class="lang-py prettyprint-override"><code>import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
df = sns.load_dataset('titanic')
sns.set(style="white", palette="muted", color_codes=True)
fig = plt.figure(constrained_layout=True, figsize=(8, 3))
spec = fig.add_gridspec(1, 2)
ax5 = fig.add_subplot(spec[0, :])
sns.histplot(df, x='age', bins=np.arange(-0.5, 86, 5), kde=False, hue='survived', legend=True, ax=ax5)
ax5.legend(['Yes', 'No'], title='Survived?', prop={'size': 12})
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/hKpjZ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/hKpjZ.png" alt="example plot"/></a></p>