Python matplotlib 画图入门示例01

news/2025/10/25 13:31:55/文章来源:https://www.cnblogs.com/emanlee/p/19164841

参考:

https://www.cnblogs.com/emanlee/p/16025425.html

 

Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。
Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
Matplotlib 通常与 NumPy 和 SciPy(Scientific Python)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

安装 Matplotlib

pip install matplotlib

 

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()

函数subplots()可以在一张画布上添加多个图形。画布命令为“fig”,坐标系“ax”负责调用plot()。
在命令行模式下,图形暂时存放在后台,只有调用plt.show()函数,才能弹出新窗口,把图形显示出来。

import matplotlib.pyplot as plt
import numpy as npx = np.linspace ( 0, 2 * np.pi, 200 )
y = np.sin ( x )plt.plot ( x, y )
plt.show ( )

 

Parts of a Figure图形的各个部分的名称

图片

图片

 

Plot types>Pairwise data成对数据>plot(x, y)

Plot y versus x as lines and/or markers.
将 y 与 x 的关系绘制为线条和/或标记。

import matplotlib.pyplot as plt
import numpy as npplt.style.use('_mpl-gallery')# make data
x = np.linspace(0, 10, 100)
y = 4 + 1 * np.sin(2 * x)
x2 = np.linspace(0, 10, 25)
y2 = 4 + 1 * np.sin(2 * x2)# plot
fig, ax = plt.subplots()ax.plot(x2, y2 + 2.5, 'x', markeredgewidth=2)
ax.plot(x, y, linewidth=2.0)
ax.plot(x2, y2 - 2.5, 'o-', linewidth=2)ax.set(xlim=(0,8), xticks=np.arange(1,8),ylim=(0,8), yticks=np.arange(1,8))plt.show()

 

图片

 这段代码使用 matplotlib 和 numpy 绘制了一个包含三条曲线的图表,主要展示了正弦函数的不同表现形式。下面是逐部分的详细解释:

1. 导入库 

import matplotlib.pyplot as plt  # 导入matplotlib绘图库,简写为plt
import numpy as np               # 导入numpy数值计算库,简写为np 

2. 设置绘图风格

plt.style.use('_mpl-gallery')  # 使用matplotlib内置的"_mpl-gallery"风格  
_mpl-gallery 是一种简洁的绘图风格,适合展示示例图表,会自动调整线条、刻度等样式。

3. 生成数据

# 生成x轴数据:从0到10均匀取100个点(密集点,用于绘制平滑曲线)
x = np.linspace(0, 10, 100)
# 计算对应的y值:基于正弦函数 y = 4 + sin(2x)(基础正弦曲线)
y = 4 + 1 * np.sin(2 * x)# 生成另一组x轴数据:从0到10均匀取25个点(稀疏点,用于绘制离散标记)
x2 = np.linspace(0, 10, 25)
# 计算对应的y值:与上面的正弦函数公式相同,只是基于稀疏的x2
y2 = 4 + 1 * np.sin(2 * x2) 

4. 创建图表和轴对象

fig, ax = plt.subplots()  # 创建一个图表(fig)和一个轴对象(ax) 
plt.subplots() 是创建图表的常用方式,fig 代表整个图表,ax 代表图表中的坐标轴(用于绘图的区域)。

5. 绘制三条曲线

# 1. 绘制离散的"x"标记:基于x2、y2+2.5(上移2.5单位),标记边缘宽度为2
ax.plot(x2, y2 + 2.5, 'x', markeredgewidth=2)# 2. 绘制平滑曲线:基于密集的x、y,线宽为2.0(基础正弦曲线)
ax.plot(x, y, linewidth=2.0)# 3. 绘制"圆点+连线":基于x2、y2-2.5(下移2.5单位),线宽为2
ax.plot(x2, y2 - 2.5, 'o-', linewidth=2) 
  • 'x':指定标记样式为叉号(无连线,仅离散点)
  • 'o-':指定标记样式为圆点,且点之间用直线连接
  • linewidth/markeredgewidth:控制线条 / 标记边缘的宽度

6. 设置坐标轴范围和刻度

ax.set(xlim=(0, 8),        # x轴显示范围:0到8xticks=np.arange(1, 8),  # x轴刻度:1,2,3,4,5,6,7ylim=(0, 8),        # y轴显示范围:0到8yticks=np.arange(1, 8)   # y轴刻度:1,2,3,4,5,6,7
) 
通过 ax.set() 统一设置坐标轴参数,使图表聚焦在 (0,0) 到 (8,8) 的区域,刻度间隔为 1。

7. 显示图表

plt.show()  # 弹出窗口显示绘制的图表 

最终效果

图表中会有三条线: 
  • 上方:离散的叉号(x),对应上移后的正弦函数
  • 中间:平滑的曲线,对应原始正弦函数
  • 下方:圆点 + 连线,对应下移后的正弦函数 
整体展示了正弦函数的波形特征,以及不同数据密度和标记样式的绘图效果。

 

 

Plot types>Pairwise data成对数据>scatter(x, y)

A scatter plot of y vs. x with varying marker size and/or color.
y 与 x 的散点图,具有不同的标记大小和/或颜色。

import matplotlib.pyplot as plt
import numpy as npplt.style.use('_mpl-gallery')# make the data
np.random.seed(3)
x = 4 + np.random.normal(0, 2, 24)
y = 4 + np.random.normal(0, 2, len(x))
# size and color:
sizes = np.random.uniform(15, 80, len(x))
colors = np.random.uniform(15, 80, len(x))# plot
fig, ax = plt.subplots()ax.scatter(x, y, s=sizes, c=colors, vmin=0, vmax=100)ax.set(xlim=(0,8), xticks=np.arange(1,8),ylim=(0,8), yticks=np.arange(1,8))plt.show()

图片

 

上面这段代码使用 matplotlib 和 numpy 绘制了一个散点图,通过随机数据展示了不同大小和颜色的散点分布。以下是详细解释:

1. 导入库与设置风格

import matplotlib.pyplot as plt  # 导入绘图库
import numpy as np               # 导入数值计算库plt.style.use('_mpl-gallery')    # 使用简洁的"_mpl-gallery"绘图风格
 

2. 生成随机数据

np.random.seed(3)  # 设置随机种子,确保每次运行生成相同的随机数(便于复现结果)# 生成x轴数据:均值为4、标准差为2的正态分布,共24个点(范围大致在0-8之间)
x = 4 + np.random.normal(0, 2, 24)# 生成y轴数据:与x同长度,同样是均值4、标准差2的正态分布
y = 4 + np.random.normal(0, 2, len(x))  # len(x)=24,所以y也有24个点# 生成散点的大小:24个在15到80之间的随机数(均匀分布)
sizes = np.random.uniform(15, 80, len(x))# 生成散点的颜色值:24个在15到80之间的随机数(均匀分布,用于映射颜色)
colors = np.random.uniform(15, 80, len(x))
 

3. 创建图表与绘制散点图

fig, ax = plt.subplots()  # 创建图表(fig)和坐标轴(ax)# 绘制散点图
ax.scatter(x, y,              # x和y坐标数据(决定散点的位置)s=sizes,           # 散点大小(s参数接收数组,每个点的大小对应sizes中的值)c=colors,          # 散点颜色(c参数接收数组,值映射到颜色条)vmin=0, vmax=100   # 颜色映射的范围(0到100,用于统一颜色刻度)
) 
  • scatter 是绘制散点图的核心函数,每个点的位置由 (x[i], y[i]) 决定。
  • 点的大小随 sizes 数组变化(值越大,点越大)。
  • 点的颜色随 colors 数组变化(值通过颜色映射表转换为实际颜色,vmin/vmax 固定了颜色映射的上下限)。

4. 设置坐标轴参数

ax.set(xlim=(0, 8),        # x轴显示范围:0到8xticks=np.arange(1, 8),  # x轴刻度:1,2,3,4,5,6,7ylim=(0, 8),        # y轴显示范围:0到8yticks=np.arange(1, 8)   # y轴刻度:1,2,3,4,5,6,7
) 
将坐标轴范围限制在 0-8,刻度间隔为 1,使散点集中展示在该区域。

5. 显示图表

plt.show()  # 弹出窗口显示绘制的散点图 

最终效果

图表中会显示 24 个散点,特点是: 
  • 位置随机分布在 (0-8, 0-8) 范围内(因数据基于均值 4 的正态分布,多数点集中在中间区域)。
  • 每个点的大小不同(15 到 80 之间随机)。
  • 每个点的颜色不同(基于 15 到 80 的数值映射,通常颜色条会自动显示在旁边,用于说明颜色对应的数值)。 
整体呈现了一组带有大小和颜色维度的随机分布散点,适合展示多维数据的分布特征。

 

 

Plot types>Pairwise data成对数据>bar( )

import matplotlib.pyplot as plt
import numpy as npplt.style.use('_mpl-gallery')# make data:
x = 0.5 + np.arange(8)
y = [4.8, 5.5, 3.5, 4.6, 6.5, 6.6, 2.6, 3.0]# plot
fig, ax = plt.subplots()ax.bar(x, y, width=1, edgecolor="white", linewidth=0.7)ax.set(xlim=(0, 8), xticks=np.arange(1, 8),ylim=(0, 8), yticks=np.arange(1, 8))plt.show()

图片

 这段代码使用 matplotlib 和 numpy 绘制了一个柱状图,展示了一组离散数据的分布。以下是详细解释:

1. 导入库与设置风格

import matplotlib.pyplot as plt  # 导入绘图库
import numpy as np               # 导入数值计算库plt.style.use('_mpl-gallery')    # 使用简洁的"_mpl-gallery"绘图风格,统一图表样式 

2. 准备数据

# x轴数据:从0.5开始,生成8个连续整数(0.5, 1.5, 2.5, ..., 7.5)
# 作用是确定每个柱子的中心位置
x = 0.5 + np.arange(8)# y轴数据:8个数值,对应每个柱子的高度
y = [4.8, 5.5, 3.5, 4.6, 6.5, 6.6, 2.6, 3.0] 
  • np.arange(8) 生成 [0,1,2,3,4,5,6,7],加 0.5 后得到 [0.5,1.5,...,7.5],确保柱子在后续设置的刻度中间对齐。

3. 创建图表与绘制柱状图

fig, ax = plt.subplots()  # 创建图表(fig)和坐标轴(ax)# 绘制柱状图
ax.bar(x, y,               # x是柱子的中心位置,y是柱子高度width=1,            # 柱子宽度为1(与x轴数据间隔匹配,避免重叠或间隙)edgecolor="white",  # 柱子边缘颜色为白色linewidth=0.7       # 柱子边缘线宽为0.7
) 
  • ax.bar 是绘制柱状图的核心函数,每个柱子的位置由 x 决定,高度由 y 决定。
  • width=1 配合 x 的间隔(相邻 x 值差 1),使柱子紧密排列且无重叠。
  • 白色边缘线让每个柱子的边界更清晰。

4. 设置坐标轴参数

ax.set(xlim=(0, 8),        # x轴显示范围:0到8(覆盖所有柱子的位置)xticks=np.arange(1, 8),  # x轴刻度:1,2,3,4,5,6,7(对应8个柱子的大致位置)ylim=(0, 8),        # y轴显示范围:0到8(覆盖y值的最大值6.6)yticks=np.arange(1, 8)   # y轴刻度:1到7,间隔为1
) 
通过限制坐标轴范围和设置刻度,使柱状图展示更集中,刻度与数据范围匹配。

5. 显示图表 

plt.show()  # 弹出窗口显示绘制的柱状图 

最终效果

图表中会显示 8 个垂直柱子,特点是: 
  • 每个柱子的高度对应 y 中的数值(例如第一个柱子高 4.8,第六个最高为 6.6)。
  • 柱子宽度为 1,紧密排列,边缘有白色细线。
  • x 轴刻度为 1 到 7,y 轴刻度为 1 到 7,整体风格简洁清晰,突出数据对比。 
该图表适合直观展示多组离散数据的大小差异。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂x402 协议

x402 协议:未来互联网支付的“聪明”新方式,AI 和机器也能轻松用 今天我们来聊聊一个叫 x402 协议 的新鲜玩意儿。它就像是给互联网支付“升级”了,让付款变得超级简单,就像点开网页一样快。尤其适合 AI 机器人和机…

2025年防水膜厂家推荐排行榜,防水透气膜,防水膜材料,喇叭防水膜,防水网,手机防水膜,咪头防水网,耐高温防水膜公司精选

2025年防水膜厂家推荐排行榜:防水透气膜与防水膜材料企业深度解析 随着消费电子、汽车电子、医疗设备等行业的快速发展,防水膜技术已成为保障电子产品可靠性的关键要素。防水膜、防水透气膜、防水膜材料、喇叭防水膜…

2025年摩托车厂家权威推荐榜:覆盖街车、跑车、巡航车、越野车的最新选购指南及品牌实力解析

2025年摩托车厂家权威推荐榜:覆盖街车、跑车、巡航车、越野车的最新选购指南及品牌实力解析 行业背景与发展趋势 摩托车产业作为现代交通工具制造业的重要组成部分,近年来呈现出多元化、专业化的发展态势。随着全球环…

2025年摩托车/机车厂家权威推荐榜:专业制造工艺与卓越性能口碑之选,覆盖街车、跑车、巡航车型的源头厂家深度解析

2025年摩托车/机车厂家权威推荐榜:专业制造工艺与卓越性能口碑之选,覆盖街车、跑车、巡航车型的源头厂家深度解析 随着全球摩托车市场的持续升温,中国摩托车制造业正迎来新一轮技术革新与产业升级。在电动化、智能化…

dell服务器SD卡mirror的设置

dell服务器SD卡mirror的设置dell服务器SD卡mirror的设置BIOS下的IDSDM设置: System BIOS - System BIOS Settings->Integrated Devices a.Internal SD Card Port: 开启或关闭SD卡 b.Internal SD Card Redundancy: …

2025年冷水机/冷冻机/冰水机厂家权威推荐榜:工业制冷设备实力解析与高效节能选购指南

2025年冷水机/冷冻机/冰水机厂家权威推荐榜:工业制冷设备实力解析与高效节能选购指南 工业制冷设备作为现代制造业的重要基础设施,在塑料成型、食品加工、激光切割、化工生产等众多领域发挥着关键作用。随着"双…

2025年英语学习机推荐:小初高提分路径与主流选择指南

“孩子单词背了就忘、口语开不了口、家长陪读时间碎片化”——如果你正被这些问题困扰,英语学习机的搜索框里一定出现过“哪个牌子靠谱”“真能提分吗”“会不会买来吃灰”这样的关键词。2025年,教育硬件整体出货量同…

2025年英语学习机推荐:十大知名品牌排行榜与评测报告

“孩子马上幼升小,想提前培养英语语感,又怕伤眼、难坚持”“校内英语成绩卡在及格线,想找能精准提分的系统”“住校生,周末才回家,需要能离线学、家长远程可见进度的设备”——这些真实场景,对应着三类核心需求:…

2025年英语学习机推荐:市场报告级评测榜单新鲜出炉

在为孩子挑英语学习机的家长里,十个人有九个会问同一串问题:怕买回去孩子三分钟热度、怕课程与校内脱节、怕硬件用两年就卡、怕家长没时间督学。这些焦虑背后,是“双减”后家庭英语教育回归校内+家庭双线并行的现实…

2025年英语学习机推荐:主流品牌对比排行榜与避坑指南

引言与现状分析 “双减”后,家庭英语启蒙与校内提分需求同步上升,家长把“学习机”视为可在家落地的“第二课堂”。艾瑞《2025中国家庭教育支出报告》显示,3-12岁英语类硬件渗透率已达42%,但“买前焦虑”集中在三点…

2025年暖风机口碑排行榜:五款主流机型对比与避坑指南

冬天回到家,脚冷手僵,空调升温慢、油汀占地大,很多人把希望寄托在“即开即热”的暖风机上。可真正打开电商页面,PTC、石墨烯、远红外、直流变频、等离子杀菌……名词一堆,价格从九十九到两千元不等,噪音、耗电、…

深入解析:LeetCode 390 消除游戏

深入解析:LeetCode 390 消除游戏pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

2025年暖风机评测:五款口碑机型横向对比与推荐

寒冬来临,客厅、卧室、办公室甚至浴室都需要一台“即开即热”的暖风机,但用户普遍面临三大痛点:一是升温慢、热风直吹干燥;二是噪音大、耗电高;三是安全认证不全、售后响应慢。奥维云网2024年取暖器白皮书显示,暖…

感知节点@8@ ESP32+arduino+ 第六个程序 读取射频卡卡号

一、硬件与接线 1.1 RFID RC552 MFRC522简化功能框图: 先从RC522功能框图入手,可以从大方向上理解通讯原理。 上述主机一般指的就是手上的开发板,通信接口对应天线,MFRC522与主机通讯支持UART、SPI以及IIC,本…

一个关于cos的极限

\[\lim_{x\to 0}\dfrac{1 - \cos x}{x} = 0 \]第一种推导方法:使用勾股定理。 \[\begin{align*} \lim_{x\to 0}\dfrac{1 - \cos x}{x} &= \lim_{x\to 0}\dfrac{1 - \cos x}{x}\cdot \dfrac{1 + \cos x}{1 + \cos …

Ai元人文:共识锚定

从“概率模仿与监管”到“共识锚定与生成” 当前人工智能的发展正面临一个根本性瓶颈:如何让智能系统理解、承载并协同人类复杂多元的价值体系。传统的“价值对齐”范式在技术上主要依赖于统计拟合与行为约束:通过在…

QEMU 建模硬件

QEMU 建模硬件场景 建模一个RISCV架构的虚拟板卡G233 G233的datasheet如下 https://gevico.github.io/learning-qemu-docs/ch4/g233-board-datasheet/ 前置 [[QEMU 初始化流程]] 看完初始化流程之后再研究怎么建模新硬…

P14304 【MX-J27-T1】分块

P14304 【MX-J27-T1】分块 题解题目传送门 My Blog 我们发现这个题是 T1,但它的 \(n\) 很大,于是我们可以合理推断这是个结论题或诈骗题。 我们考虑 \([m^2,(m+1)^2)\) 这个区间里有哪些数满足题中所述的条件。显然 …

实现安卓scrollview里的多个按钮实现的每个按钮单选功能

实现安卓scrollview里的多个按钮实现的每个按钮单选功能void initPatterns(LinearLayout PatternsRoot){for(int i=0;i<512;i++){Button patternButton = new Button(PianoRollActivity.this);patternButton.setTex…

ABP - 懒加载 [ILazyServiceProvider、DefaultLazyServiceProvider、LazyServiceProvider]

懒加载 对于 ABP 框架的懒加载机制,核心是围绕 ILazyServiceProvider 接口及其实现类展开的。作为新手,你可以简单理解为:它是 ABP 提供的“延迟获取服务的工具”,能让你在需要时才创建服务实例,而不是一开始就初…