Python Matplotlib 的学习笔记
- 0. Python Matplotlib 简介
- 1. 为什么要用 Matplotlib?
- 2. Matplotlib 基础类详解
- 2-1. Line(线)
- 2-2. Marker(标记)
- 2-3. Text(文本)
- 2-4. Legend(图例)
- 2-5. Grid(网格)
- 2-6. Title(标题)
- 2-7. Image(图片)
- 3. Matplotlib 容器类详解
- 3-1. Figure(画布)
- 3-2. Axes(画框)
- 3-3. Axis(坐标轴)
- 3-4. Tick(刻度)
- 4. Matplotlib 常见的图形类型详解
- 4-1. plot(线图)
- 4-2. scatter(散点图)
- 4-3. bar(柱状图)
- 4-4. barh(水平柱状图)
- 4-5. fill_between(填充区域图)
- 4-6. stackplot(堆叠区域图)
- 4-7. pie(饼图)
- 4-8. errorbar(误差棒图)
- 4-9. hist(直方图)
- 4-10. boxplot(箱线图)
- 4-11. axhline、axvline(水平/垂直线)
- 4-12. axhspan、axvspan(水平/垂直区域)
- 4-13. text(文本)
- 4-14. annotate(注释)
0. Python Matplotlib 简介
想象一下,如果数据是一群小动物,那么Matplotlib就是一个魔法画笔,可以让这些小动物变成美丽的图画。Matplotlib是Python中一个非常强大的库,它可以帮助我们将数据绘制成图表,让复杂的信息变得简单易懂。
1. 为什么要用 Matplotlib?
- 可视化数据:就像用画笔在纸上画出你想象中的世界一样,Matplotlib可以将数据画出来,让我们更直观地理解数据。
- 多样的图表:无论是简单的线图、柱状图,还是复杂的3D图,Matplotlib都能轻松应对。
- 高度定制:你可以调整图表的每一个细节,就像给画作添加不同的颜色和装饰一样。
2. Matplotlib 基础类详解
想象你在一个巨大的画布上绘画,Matplotlib就是你的画笔和颜料,让你能够在数据的世界中创作出美丽的艺术品。让我们一起来了解一下Matplotlib中的一些基础类,它们如何帮助我们绘制各种图形元素。
2-1. Line(线)
线就像是画布上的笔触,连接着数据点,展示数据之间的关系。
x = [1, 2, 3, 4]
y = [10, 20, 15, 25]
# linestyle: supported values are '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
plt.plot(x, y, linestyle='-', linewidth=2, color='blue') # 绘制蓝色实线
plt.show()
输出,
2-2. Marker(标记)
标记就像是高亮数据点的小星星,帮助我们标注出重要的数据点。
plt.plot(x, y, marker='o', color='red') # 使用红色圆圈标记每个数据点
plt.show()
输出,
2-3. Text(文本)
文本就像是在画布上添加注释,解释图中的各个部分。
plt.plot(x, y)
plt.text(2, 20, 'Important Point') # 在(2,20)的位置添加注释
plt.show()
输出,
2-4. Legend(图例)
图例就像是地图上的指南针,告诉我们每种颜色或形状代表的意义。
plt.plot(x, y, label='Line 1')
plt.legend() # 显示图例
plt.show()
输出,
2-5. Grid(网格)
网格就像是画布上的参考线,帮助我们更准确地理解数据点的位置。
plt.plot(x, y)
plt.grid(True) # 显示网格
plt.show()
输出,
2-6. Title(标题)
标题就像是画作的名称,告诉我们这幅画想要表达的主题。
plt.plot(x, y)
plt.title("Data Visualization") # 添加标题
plt.show()
输出,
2-7. Image(图片)
你还可以在Matplotlib中添加图片,就像是在画布上贴上一张照片。
img = plt.imread('image.png') # 读取图片
plt.imshow(img) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()
输出示例,
3. Matplotlib 容器类详解
在Matplotlib的艺术世界中,画布和画框就像是展示美丽图表的舞台和框架。让我们一起探索Matplotlib中的容器类:Figure(画布)、Axes(画框)、Axis(坐标轴)和Tick(刻度),它们如何共同作用来创造出精美的数据可视化作品。
3-1. Figure(画布)
Figure是Matplotlib中最顶层的容器,可以想象成一个空白的画布,所有的图表和元素都是在这个画布上绘制的。
fig = plt.figure(figsize=(8, 6)) # 创建一个大小为8x6英寸的画布
plt.show()
这就像是你准备了一个足够大的画布,准备在上面创作。
3-2. Axes(画框)
在Figure画布上,Axes是图表的主体,包括了图表内的数据区域、坐标轴、标题、图例等。一个Figure可以包含多个Axes。
fig, ax = plt.subplots() # 创建一个包含单个Axes的Figure
ax.plot([1, 2, 3], [10, 20, 30]) # 在Axes上绘图
plt.show()
输出,
这就像是在你的画布上定义了一个绘画区域,准备在这个区域内绘制你的作品。
3-3. Axis(坐标轴)
Axis对象控制着图表中的坐标轴,包括坐标轴的界限、坐标轴上的刻度(Tick)和刻度标签等。
fig, ax = plt.subplots() # 创建一个包含单个Axes的Figure
ax.plot([1, 2, 3], [10, 20, 30]) # 在Axes上绘图
ax.xaxis.set_major_locator(plt.MaxNLocator(5)) # 设置x轴主刻度的最大数量为5
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f'${x}')) # 设置y轴刻度标签的格式
plt.show()
输出,
这就像是为你的绘画区域定制了尺子,帮助你更准确地标出数据的位置。
3-4. Tick(刻度)
Tick是坐标轴上的小标记,表示特定的数值。通过控制Tick,你可以调整刻度的位置、大小和标签。
fig, ax = plt.subplots() # 创建一个包含单个Axes的Figure
ax.tick_params(axis='x', rotation=45) # 将x轴的刻度标签旋转45度
ax.tick_params(axis='y', length=10) # 设置y轴刻度的长度为10
plt.show()
输出,
这就像是在尺子上标出了刻度,帮助人们读取具体的数值。
4. Matplotlib 常见的图形类型详解
想象你是一位艺术家,面前有各种画笔和颜料,Matplotlib就是你的工具箱,里面装着各种图形类型的工具,让你能够创作出各式各样的数据艺术品。
4-1. plot(线图)
线图就像是用画笔在纸上勾勒出的轨迹,展示数据随时间或其他变量的变化趋势。
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.show()
输出,
4-2. scatter(散点图)
散点图就像是在画布上随意洒下的彩色点,用来展示两个变量之间的关系。
plt.scatter([1, 2, 3, 4], [10, 20, 25, 30])
plt.show()
输出,
4-3. bar(柱状图)
柱状图就像是建立起来的一根根柱子,用来比较不同类别之间的数量或大小。
plt.bar(["A", "B", "C", "D"], [10, 20, 25, 30])
plt.show()
输出,
4-4. barh(水平柱状图)
水平柱状图是柱状图的一个变种,柱子横向展开,方便比较长度。
plt.barh(["A", "B", "C", "D"], [10, 20, 25, 30])
plt.show()
输出,
4-5. fill_between(填充区域图)
填充区域图就像是用颜料填充在两条线之间的区域,常用于表示范围或区间。
x = [1, 2, 3, 4]
y1 = [10, 20, 15, 25]
y2 = [15, 25, 20, 30]
plt.fill_between(x, y1, y2)
plt.show()
输出,
4-6. stackplot(堆叠区域图)
堆叠区域图就像是多层的彩色纸张叠加在一起,用来展示各部分随时间的变化。
plt.stackplot(x, y1, y2)
plt.show()
输出,
4-7. pie(饼图)
饼图就像是一个完整的圆形蛋糕被切成几块,每块代表数据的一部分,用来展示比例。
plt.pie([10, 20, 30, 40], labels=["A", "B", "C", "D"])
plt.show()
输出,
4-8. errorbar(误差棒图)
误差棒图用来表示数据的变异范围或不确定性,就像是在点上加上了能表达波动范围的小帽子。
plt.errorbar([1, 2, 3, 4], [10, 20, 25, 30], yerr=2)
plt.show()
输出,
4-9. hist(直方图)
直方图就像是将数据分组后,每组数据数量的高度,用来查看数据的分布情况。
plt.hist([1, 2, 2, 3, 4, 4, 4, 5])
plt.show()
输出,
4-10. boxplot(箱线图)
箱线图就像是数据分布的小房子,展示了数据的中位数、四分位数和异常值。
plt.boxplot([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
plt.show()
输出,
4-11. axhline、axvline(水平/垂直线)
这就像是在画布上画一条水平线或垂直线,用来标示出一个特定的值。
plt.axhline(y=0.5, color='r', linestyle='-') # 在y=0.5的位置画一条红色水平线
plt.axvline(x=0.5, color='b', linestyle='--') # 在x=0.5的位置画一条蓝色虚线垂直线
plt.show()
输出,
4-12. axhspan、axvspan(水平/垂直区域)
这些函数可以在画布上标记出一个水平或垂直的区域,就像是用透明颜色高亮某个区间。
plt.axhspan(0.25, 0.75, color='yellow', alpha=0.5) # 高亮y=0.25到y=0.75的区域
plt.axvspan(0.25, 0.75, color='green', alpha=0.5) # 高亮x=0.25到x=0.75的区域
plt.show()
输出,
4-13. text(文本)
text允许你在图中的任意位置添加文本,就像是在画中写下注释或说明。
plt.text(0.5, 0.5, 'Hello Matplotlib', ha='center', va='center') # 在图中央添加文本
plt.show()
输出,
4-14. annotate(注释)
annotate用于在图表中添加注释,你可以指定注释文本的位置和被注释点的位置,还可以有一个箭头指向被注释的点。
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.annotate('This is the top', xy=(3, 25), xytext=(2, 28),
arrowprops=dict(facecolor='black', shrink=0.05)) # 在第三个点添加注释
plt.show()
输出,
Matplotlib提供了丰富的图形类型和绘图工具,就像一个艺术家的画笔集,允许你以各种创意方式展示数据。从简单的线图到复杂的注释和区域高亮,你可以利用这些工具来讲述数据的故事,使你的分析结果生动、直观。探索这些图形类型,让你的数据可视化作品更加丰富和有说服力。
完结!