Matplotlib 是一个 Python 2D 绘图库,可以生成发布质量级别的各种硬拷贝格式和交互式环境下的图形。在本教程中,我们将介绍如何使用 Matplotlib 绘制柱状图、线形图和堆积柱状图。这些图表类型是数据可视化中最常用的图表,适合初学者学习和掌握。
Matplotlib 绘图基础知识
在开始绘图之前,我们需要了解一些 Matplotlib 的基础知识。首先,确保你已经安装了 Matplotlib。如果没有安装,可以通过以下命令安装:
pip install matplotlib
导入 Matplotlib 的 pyplot 模块,通常我们将其重命名为 plt:
import matplotlib.pyplot as plt
Matplotlib 中的基本图标包括以下元素:
x 轴和 y 轴:水平和垂直的轴线。
x 轴和 y 轴刻度:刻度标示坐标轴的分隔,包括最小刻度和最大刻度。
x 轴和 y 轴刻度标签:表示特定坐标轴的值。
绘图区域:实际绘图的区域。
plot() 可以只传入 y 轴的值,plot() 为 x 轴提供默认值。
plt.plot([1, 2, 3, 4, 3, 2, 3, 2, 1, 3, 2, 1])
plt.show()
plot() 可以同时传入 x 轴的值和 y 轴的值。
plt.plot([4, 3, 2, 1], [1, 2, 3, 4]);
Matplotlib 绘制柱状图、线性图和堆积柱状图
绘制柱状图
柱状图是表示数据分布的一种图表类型,非常适合比较多个项目之间的数值大小。
# 数据
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 5]
# 绘制柱状图
plt.bar(categories, values)
plt.title('bar chart')
plt.xlabel('category')
plt.ylabel('vlaue')
plt.show()
绘制线形图
线形图用于展示数据随时间或有序分类变化的趋势。
# 数据
x = np.arange(4)
y = np.array([10, 20, 15, 5])
# 绘制线形图
plt.plot(x, y, marker='o')
plt.title('line plot')
plt.xlabel('time')
plt.ylabel('vlaue')
plt.grid(True)
plt.show()
绘制堆积柱状图
堆积柱状图用于展示各部分占总体的比例关系,以及总体随分类的变化。
# 数据
N = 4
menMeans = (20, 35, 30, 35)
womenMeans = (25, 32, 34, 20)
ind = np.arange(N)
# 绘制堆积柱状图
p1 = plt.bar(ind, menMeans)
p2 = plt.bar(ind, womenMeans, bottom=menMeans)
plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.xticks(ind, ('G1', 'G2', 'G3', 'G4'))
plt.yticks(np.arange(0, 81, 10))
plt.legend((p1[0], p2[0]), ('Men', 'Women'))
plt.show()
子图
Matplotlib 库在一个图形窗口中创建了多个不同类型的图表,每个图表展示在图形窗口的不同部分。通过将图形窗口分割成 x行 y 列的子图区域来实现的,每个子图展示一种不同的图表类型。
x = [5,4,3,2,1]
y = [1,2,3,4,5]
plt.figure() # 创建一幅图
plt.subplot(231) # 将图分隔为 2 x 3 格,选中第 1 格
plt.plot(x, y) # 绘制直线图
plt.subplot(232) # 选中第 2 格
plt.barh(x, y) # 绘制水平的直方图
plt.subplot(233) # 选中第 3 格
plt.bar(x, y) # 绘制直方图
plt.subplot(234) # 选中第 4 格
plt.bar(x, y) # 绘制直方图
y1 = [9,3,8,7,1] # 用新的数据绘制直方图
plt.bar(x, y1, bottom=y, color = 'r')
plt.subplot(235) # 选中第 5 格
plt.boxplot(x) # 绘制箱型图
plt.subplot(236) # 选中第 6 格
plt.scatter(x,y) # 绘制散点图
plt.show()
调用 figure() 方法,就创建出一个新的图表。
调用 subplot(231) 方法把图表分割成 2×3 的网格。也可以用 subplot(3,2,1) 这种形式来调用,其中第一个参数是行数,第二个参数是列数,第三个参数表示图形的标号。
接着用几个简单的命令创建垂直柱状图 (bar()) 和水平柱状图 (barh()) 。对于堆叠柱状图,我们需要把两个柱状图方法调用连在一起。通过设置参数 bottom=y,把第二个柱状图和前一个连接起来形成堆叠柱状图。
最后创建了一个散点图让大家对散点的数据集合有所了解。
工作原理
Matplotlib 通过将数据映射到图形对象上,然后在画布上渲染这些对象来工作。在绘制图表时,我们首先创建一个图形(figure),然后在图形上添加一个或多个绘图区域(axes),最后在绘图区域上绘制图表。
补充说明
图形(Figure):整个图像,可以包含一个或多个绘图区域。
绘图区域(Axes):图形中的一个区域,用于绘制图表。
标签(Label):用于描述图表的信息,如标题、坐标轴标签等。
通过学习这些基础知识和示例,你可以开始使用 Matplotlib 创建自己的数据可视化图表了。随着实践的增加,你将能够掌握更多高级功能,创建更复杂和美观的图表。
最后
欢迎关注我的微信公众号, 一起交流学习!!!