📜  如何使用 Matplotlib 在直方图中按组填充颜色?

📅  最后修改于: 2022-05-13 01:55:17.681000             🧑  作者: Mango

如何使用 Matplotlib 在直方图中按组填充颜色?

在本文中,我们将了解如何使用Python中的 Matplotlib 在直方图中按组填充颜色。

方法一:使用 pivot() 方法

在这个方法中,我们将使用 pivot 方法,它根据指定的索引/列值返回一个有组织的 DataFrame。

注意:当我们想要对给定数据进行进一步分组时,会遵循这种方法。

我们在这种方法中使用这个 DataFrame 来绘制一个表示不同性别之间年龄的直方图。

Python3
# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
 
# create a DataFrame
personAges = pd.DataFrame({'Gender': ['Male', 'Female',
                                      'Male', 'Female',
                                      'Female'],
                           'Age': [25, 19, 21, 30, 18]})
 
# group data & plot histogram
personAges.pivot(columns='Gender', values='Age').plot.hist()
plt.show()


Python3
# import necessary libraries
import matplotlib.pyplot as plt
 
mens_age = 18, 19, 20, 21, 22, 23, 24, 25, 26, 27
female_age = 22, 28, 30, 30, 12, 33, 41, 22, 43, 18
 
plt.hist([mens_age, female_age], color=[
         'Black', 'Red'], label=['Male', 'Female'])
plt.xlabel('Age')
plt.ylabel('Person Count')
plt.legend()
plt.show()


输出:

这里将原始 DataFrame 基于 Gender 列的 Age 值重新组织成一个新的 DataFrame。对于这个重组的 DataFrame,我们绘制了直方图。

结果图表明有 2 名女性在 18-20 岁之间,1 名女性在 29-30 岁之间,1 名男性在 20-22 岁之间,即 21 岁,最后 1 名男性在 24-25 岁之间。

方法2:使用分离的数据集

当我们已经在任何基础上分离数据时,可以采用这种方法。让我们考虑 2 个包含男性和女性年龄的对象。

mens_age=18,19,20,21,22,23,24,25,26,27
female_age=22,28,30,30,12,33,41,22,43,18

如果我们有上述类型的分离数据,那么我们可以在绘制直方图时为不同的组指定不同的颜色,即在 hist 方法中。

Python3

# import necessary libraries
import matplotlib.pyplot as plt
 
mens_age = 18, 19, 20, 21, 22, 23, 24, 25, 26, 27
female_age = 22, 28, 30, 30, 12, 33, 41, 22, 43, 18
 
plt.hist([mens_age, female_age], color=[
         'Black', 'Red'], label=['Male', 'Female'])
plt.xlabel('Age')
plt.ylabel('Person Count')
plt.legend()
plt.show()

输出:

由于我们已经根据性别对数据进行了分组,因此我们无需使用任何数据透视函数。所以我们可以直接在 hist函数中指定那些不同颜色的独立数据集。

这是根据给定数据和在直方图中按组填充颜色的要求需要遵循的两种方法。