当前位置: 首页 > news >正文

Python Matplotlib 的学习笔记

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提供了丰富的图形类型和绘图工具,就像一个艺术家的画笔集,允许你以各种创意方式展示数据。从简单的线图到复杂的注释和区域高亮,你可以利用这些工具来讲述数据的故事,使你的分析结果生动、直观。探索这些图形类型,让你的数据可视化作品更加丰富和有说服力。

完结!

http://www.lryc.cn/news/300377.html

相关文章:

  • SQL语言1
  • PowerShell搭建vue起始项目
  • jmeter遇到连接数据库的问题
  • 应急响应实战笔记02日志分析篇(3)
  • 常见性能优化策略
  • 【微信小程序】微信小程序开发:从入门到精通
  • 【经验】STM32的一些细节
  • ubuntu22.04安装部署03: 设置root密码
  • 【lesson56】生产者消费者模型
  • MySQL5.7升级到MySQL8.0的最佳实践分享
  • Rust 数据结构与算法:5栈:用栈实现前缀、中缀、后缀表达式
  • 作业day6
  • 前方预警!2024年七大网络安全威胁
  • 绿色化 数据库 MongoDB 和 mysql 安装
  • npm install 一直卡着不动如何解决
  • 电路设计(15)——篮球赛24秒违例倒计时报警器的proteus仿真
  • golang 集成sentry:http.Client
  • 设计链表(不难,代码稍微多一点)
  • [GXYCTF2019]禁止套娃
  • ubuntu下如何查看显卡及显卡驱动
  • 【图论经典题目讲解】CF786B - Legacy 一道线段树优化建图的经典题目
  • 【AIGC】Stable Diffusion的采样器入门
  • 【Python】通过conda安装Python的IDE
  • 基于HTML5实现动态烟花秀效果(含音效和文字)实战
  • 「数据结构」栈和队列
  • 【机器学习笔记】5 机器学习实践
  • C++ //练习 7.5 在你的Person类中提供一些操作使其能够返回姓名和住址。这些函数是否应该是const的呢?解释原因。
  • python系统学习Day2
  • 学习笔记——ENM模拟
  • 数值类型的运算方式总结