Matplotlib 如何使用Matplotlib和Seaborn创建多个条形图来比较多组数据

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绘制了更具有美感的图表。希望这篇文章能够帮助你在数据可视化中实现多个条形图。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程