Matplotlib 如何使用Matplotlib和Seaborn创建多个条形图来比较多组数据
在数据可视化中,条形图是一种非常常用的图表类型。Matplotlib和Seaborn是Python中用来绘制数据可视化图表的两个强大工具。使用这些工具,可以轻松地创建多个条形图来比较多组数据。本篇文章将介绍如何使用Matplotlib和Seaborn创建多个条形图。
阅读更多:Matplotlib 教程
准备数据
首先我们需要准备一些数据来进行可视化。在这里,我们将使用在过去十年中不同区域的销售数据来进行演示。
import numpy as np
import pandas as pd
# 生成数据
np.random.seed(123)
values_1 = np.random.randint(100, size=7)
values_2 = np.random.randint(100, size=7)
values_3 = np.random.randint(100, size=7)
index = np.array(['North', 'South', 'East', 'West', 'Northeast', 'Southeast', 'Southwest'])
df = pd.DataFrame({'Sales_1': values_1, 'Sales_2': values_2, 'Sales_3': values_3}, index=index)
df
这会生成以下数据:
Sales_1 Sales_2 Sales_3
North 66 92 98
South 18 10 53
East 77 70 10
West 49 87 78
Northeast 97 96 96
Southeast 47 73 31
Southwest 32 32 51
绘制多个条形图
在这个例子中,我们将创建三个条形图,每个条形图将显示不同区域的销售数据。首先我们将使用Matplotlib绘制一个简单的条形图。
import matplotlib.pyplot as plt
# 绘制一张条形图
plt.bar(df.index, df['Sales_1'])
# 添加标题和标签
plt.title('Sales_1')
plt.xlabel('Region')
plt.ylabel('Sales (Millions)')
# 显示图表
plt.show()
接下来,我们将使用Matplotlib绘制三个条形图,并将它们组合在一起。
# 创建一个包含三个子图的图表
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10,4))
# 绘制三个条形图
axes[0].bar(df.index, df['Sales_1'])
axes[1].bar(df.index, df['Sales_2'])
axes[2].bar(df.index, df['Sales_3'])
# 添加标题和标签
axes[0].set_title('Sales_1')
axes[0].set_xlabel('Region')
axes[0].set_ylabel('Sales (Millions)')
axes[1].set_title('Sales_2')
axes[1].set_xlabel('Region')
axes[1].set_ylabel('Sales (Millions)')
axes[2].set_title('Sales_3')
axes[2].set_xlabel('Region')
axes[2].set_ylabel('Sales (Millions)')
# 调整子图之间的间距和布局
fig.tight_layout()
# 显示图表
plt.show()
另一个非常流行的绘制条形图的工具是Seaborn。Seaborn可以使用独特的样式绘制美观的图表。在这里,我们将使用Seaborn绘制上述三个条形图。
import seaborn as sns
# 设置样式
sns.set_style("whitegrid")
# 创建一个包含三个子图的图表
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10,4))
# 绘制三个条形图
sns.barplot(x=df.index, y=df['Sales_1'], ax=axes[0], color='b')
sns.barplot(x=df.index, y=df['Sales_2'], ax=axes[1], color='g')
sns.barplot(x=df.index, y=df['Sales_3'], ax=axes[2], color='r')
# 添加标题和标签
axes[0].set_title('Sales_1')
axes[0].set_xlabel('Region')
axes[0].set_ylabel('Sales (Millions)')
axes[1].set_title('Sales_2')
axes[1].set_xlabel('Region')
axes[1].set_ylabel('Sales (Millions)')
axes[2].set_title('Sales_3')
axes[2].set_xlabel('Region')
axes[2].set_ylabel('Sales (Millions)')
# 调整子图之间的间距和布局
fig.tight_layout()
# 显示图表
plt.show()
正如你所见,使用Seaborn绘制的图表更美观,并且颜色明亮且易于区分。使用Seaborn绘制条形图还具有很多其他的特性,如添加误差线和调整X轴标签的角度等。你可以通过这个链接了解更多信息。
总结
在本文中,我们介绍了如何使用Matplotlib和Seaborn创建多个条形图来比较多组数据。我们使用准备的销售数据演示了如何绘制单个和多个条形图,并使用Seaborn绘制了更具有美感的图表。希望这篇文章能够帮助你在数据可视化中实现多个条形图。
极客笔记