网易首页 > 网易号 > 正文 申请入驻

人工智能通识课:Matplotlib 数据可视化

0
分享至

在数据分析、科学计算以及机器学习实践中,数据往往不是先靠“计算结果”被理解,而是先靠“图形表现”被看懂。数字本身当然重要,但当数据规模增大、变量关系变复杂时,仅仅阅读一串数值,往往很难迅速把握整体特征。此时,图形就成为理解数据的重要工具。

例如,一组数据如果直接写成:

[10, 15, 20, 18, 25]

我们只能大致知道它在变化,却不容易立刻感受到变化的趋势、波动的位置以及增长的快慢;但如果将它绘制成折线图,数据走势通常会立即变得清晰得多。也正因为如此,数据可视化几乎贯穿于数据分析的整个过程:在探索阶段帮助我们观察分布,在建模阶段帮助我们检验关系,在结果展示阶段帮助我们传达结论。

在 Python 生态中, 是最基础、也最重要的可视化库之一。许多更高级的可视化工具,本质上都与它存在直接或间接的联系。

一、Matplotlib 是什么

Matplotlib 是 Python 中用于绘制二维图形的通用可视化库。它支持折线图、散点图、柱状图、直方图、饼图等多种常见图形,也可以进一步扩展到更复杂的可视化任务。

它之所以被广泛使用,主要有几个原因。

第一,它覆盖了数据分析中最常见的绘图需求。无论是展示趋势、比较类别、观察分布,还是分析变量关系,Matplotlib 都能提供基础支持。

第二,它与 NumPy、Pandas 等科学计算库结合紧密。很多时候,我们并不是单独“为了画图而画图”,而是在数组计算、表格处理、统计分析之后,顺势进入可视化阶段。Matplotlib 恰好位于这条工作链的末端,是分析结果的主要展示工具之一。

第三,它具有较强的可定制性。图中的线条、颜色、标签、刻度、图例、网格、尺寸、分辨率等,通常都可以调整。这使得它既适合教学演示,也适合科研绘图和工程输出。

安装:

pip install matplotlib

导入时最常见的写法是:

import matplotlib.pyplot as plt

这里的 pyplot 是 Matplotlib 中最常用的接口模块。它提供了一套类似 MATLAB 风格的状态式绘图方式,因此在入门阶段非常常见。不过,Matplotlib 并不仅仅只有这一种写法。要真正理解它,必须先弄清楚它的图形结构。

二、Matplotlib 的图形结构

学习 Matplotlib 时,最容易混淆的问题之一,是“图到底是什么”。很多初学者只记住了 plt.plot()、plt.show(),却没有真正理解一幅图由哪些对象构成。实际上,Matplotlib 的图形系统是有清晰层次的。

从整体上看,可以把它理解为:

Figure → Axes → 具体图形元素

1、Figure:整个图形对象

Figure 表示整个图形对象,可以把它理解为一张完整的画布。它是所有绘图内容的最外层容器。图像的尺寸、分辨率、整体布局等,通常都与 Figure 有关。

2、Axes:实际绘图的区域

Axes 表示一个具体的绘图区,也就是带有坐标系的区域。绝大多数绘图操作,实际上都发生在 Axes 上。折线、散点、柱子、标题、坐标轴标签、图例等,都通常依附于某个 Axes。

很多初学者会把 Axes 理解为“坐标轴”,这并不准确。更合适的理解是:Axes 是一个完整的绘图区,其中包含横轴、纵轴以及这个区域中的各种图形元素。

3、图形元素:线条、文本、图例等

在 Axes 内部,还存在许多更具体的元素,例如:

• 折线

• 散点

• 柱形

• 标题

• 坐标轴标签

• 图例

• 网格线

这些是图中真正被看到的内容。从使用角度看,初学阶段只需要先把握 Figure 和 Axes 的关系即可,不必过早深入到底层对象体系。

4、直观理解

可以把 Matplotlib 的结构粗略理解为:

    └── 坐标轴

如果一张图中包含多个子图,那么一个 Figure 中就会包含多个 Axes。

三、最基本的绘图流程

无论绘制什么类型的图形,Matplotlib 的基本过程大致都可以归纳为以下几步:

1、准备数据

2、创建图形对象或绘图区

3、调用绘图函数

4、添加标题、标签、图例、网格等辅助信息

5、显示图形或保存图像

例如,下面是一段最基础的绘图代码:

plt.show()


这段代码虽然很短,但已经包含了最核心的动作:

• x 和 y 是数据

• plt.plot(x, y) 用于绘制图形

• plt.show() 用于显示图形

不过,这样得到的图通常还比较“原始”。在实际使用中,我们往往还需要进一步补充说明信息。例如:

plt.show()


这时图形就更完整了,因为它不仅有数据曲线,还有标题、坐标轴标签、图例和网格。对于读者来说,图形的可读性会明显提高。

四、最常见的几类基础图形

Matplotlib 支持的图形类型很多,但在入门阶段,应先掌握最常见、最有代表性的几类。它们分别对应不同的数据表达任务。


1、折线图:观察趋势

折线图是最常见的基础图形之一,适合展示数据随某个变量的变化趋势。例如时间序列、训练轮次、函数曲线等,都常常使用折线图。

示例:

plt.show()

折线图强调的是“连续变化”。如果我们关心的是走势、波动、上升下降趋势,那么它通常是首选。

2、散点图:观察变量关系

散点图适合展示两个变量之间的关系。每一个点对应一组观测值,点的分布形态可以帮助我们初步判断相关性、聚集趋势或异常值。

示例:

plt.show()

如果折线图强调“连起来看变化”,那么散点图更强调“分布在哪里、关系怎样”。在回归分析、相关分析和实验观察中,散点图都很常见。

3、柱状图:比较类别大小

柱状图适合比较不同类别的数据大小。例如不同班级人数、不同商品销量、不同模型准确率等,往往都可以用柱状图呈现。

示例:

plt.show()

柱状图强调的是“类别间比较”。它不是为了展示连续变化,而是为了直观比较不同项目之间的差异。

4、直方图:观察数据分布

直方图与柱状图外观相似,但含义不同。它不是用来比较离散类别,而是用来统计数据在各个区间中的分布情况。

示例:

plt.show()

直方图常用于回答这些问题:

• 数据主要集中在哪些范围

• 数据分布是否对称

• 是否接近正态分布

• 是否存在明显偏态或异常集中现象

因此,在统计分析和机器学习的数据探索阶段,直方图尤其常见。

5、饼图:展示整体中的占比

饼图适合展示各部分在整体中的比例关系。

示例:

plt.show()

饼图虽然直观,却并不总是最优选择。当类别较多或各部分差异不明显时,饼图的可读性会明显下降,这时柱状图往往更清晰。因此,饼图适合在类别不多、比例关系明确时使用。

五、状态式绘图与面向对象绘图

所谓“状态式绘图”,可以理解为:当前有一个默认的图形环境,pyplot 会把你的操作自动作用到当前图或当前绘图区上。这种方式依赖的是 pyplot 提供的状态式接口,优点是上手快,代码短,适合简单场景。

比如:

plt.show()

但当图形变复杂时,它也容易让人分不清“当前到底在操作哪一个图、哪一个子图”。

因此,Matplotlib 官方更推荐另一种方式:面向对象绘图。

1、面向对象写法的基本形式

示例:

plt.show()

• fig 表示整个图形对象

• ax 表示具体绘图区

也就是说,图是先被创建出来的,然后再明确地在某个 ax 上绘制内容。

2、为什么更推荐面向对象方式

面向对象写法的最大优点,是结构清楚。尤其当一张图中包含多个子图时,这种优势会更加明显。

示例:

plt.show()


这里的两个子图各自对应一个 Axes 对象。因为每个图都明确属于自己的 ax,所以代码更容易维护,也更不容易混乱。

3、如何理解两种方式的关系

初学时,可以先用状态式写法快速熟悉绘图流程;但随着图形复杂度提高,应逐步过渡到面向对象写法。

从本质上说:

• plt.plot() 是在“当前 Axes 上画图”

• ax.plot() 是在“指定 Axes 上画图”

前者强调方便,后者强调清晰。

六、图形修饰:让图真正可读

一张图并不是画出来就结束了。真正有用的图,通常还需要经过修饰,才能成为清晰的信息表达工具。

最常见的修饰包括以下几类。

1、标题

标题告诉读者这张图在展示什么内容。没有标题的图,往往需要读者自行猜测含义。

plt.title("Example Function")

或在面向对象写法中:

ax.set_title("Example Function")

2、坐标轴标签

横轴和纵轴标签用于说明变量含义。如果坐标轴没有标签,读者常常不知道横纵轴分别代表什么。

plt.ylabel("y")

对应的面向对象写法为:

ax.set_ylabel("y")

3、图例

当图中有多条曲线或多个图形对象时,图例非常重要。它用于说明不同颜色、不同线条分别对应什么含义。

plt.legend()

4、网格

网格不是必须的,但在很多图中,它可以帮助读者更容易估计位置和数值范围,特别是在教学、分析和报告场景中很有帮助。

plt.grid(True)

5、子图间距调整

当一个 Figure 中有多个子图时,标题、标签和刻度文字可能互相挤压。此时通常需要调整布局。

plt.tight_layout()

它的作用是自动优化子图之间的间距,减少重叠问题。

七、图形显示、保存与输出后端

绘图完成后,通常还需要处理两个问题:一是怎样显示图形,二是怎样保存图像。

1、显示图形

plt.show()

在普通 Python 脚本中,通常需要显式调用 show(),图形窗口才会弹出。

在某些交互式环境中,图形可能会自动显示,但理解 show() 的作用仍然很重要。

2、保存图像

plt.savefig("plot.png", dpi=300, bbox_inches="tight")

这里:

• "plot.png" 是输出文件名

• dpi=300 表示较高分辨率

• bbox_inches="tight" 表示尽量裁剪多余空白

一般来说,常见输出格式包括 PNG、PDF、SVG 等。

其中,PNG 适合普通图像输出,PDF 和 SVG 更适合高质量文档或矢量图场景。

在实际使用中,通常建议先保存,再显示。因为在某些环境中,如果先调用 show(),再调用 savefig(),可能会得到空白图像。

示例:

plt.show()

3、输出后端

在 Matplotlib 中,图形显示在屏幕上,或保存为 PNG、PDF、SVG 等文件,都依赖于后端(Backend)。可以把后端简单理解为:图形最终通过什么方式被显示或输出。

后端主要分为两类:

• 交互式后端支持图形显示与交互,例如在窗口中缩放、平移图形,也通常支持保存文件。

• 非交互式后端主要用于生成图片文件或文档图形,不提供交互式绘图窗口。

大多数情况下,Matplotlib 会自动选择合适的后端,因此不需要手动设置。

如果想查看当前使用的后端,可以写:

print(matplotlib.get_backend())

如果只需要保存图像,例如在没有图形界面的服务器上运行绘图程序,可以手动使用Agg后端。设置应在创建任何图形之前完成,通常放在导入matplotlib.pyplot之前:

Agg是基于 Anti-Grain Geometry 渲染引擎的非交互式后端,主要用于生成 PNG 等位图文件。使用它时,应通过savefig()保存结果,调用show()不会弹出交互式绘图窗口。示例中的plt.close()用于在保存后关闭图形并释放相关资源。

八、中文显示与简单全局配置

在中文环境下,Matplotlib 的一个常见问题是:图中中文可能无法正常显示,或者负号显示异常。这并不是绘图函数本身的问题,而通常与默认字体配置有关。

一种常见处理方式是使用 rcParams 设置全局参数:

这里:

•font.sans-serif用于指定无衬线字体列表。示例中的SimHei(黑体)需要已安装在当前系统中;如果没有,应改为本机已安装且支持中文的字体。

•axes.unicode_minus = False会让默认坐标轴刻度中的负号使用 ASCII 连字符-,用于规避部分字体缺少 Unicode 负号−时的显示问题;如果字体支持该字符,可以保留默认值True。

这类设置属于全局默认配置,会影响后续创建的图形。

除了字体外,还可以通过 rcParams 调整默认图像尺寸、分辨率、线宽等内容。例如:

plt.rcParams["figure.dpi"] = 120

一般来说,不必一次记住太多全局参数。只需知道:Matplotlib 不仅可以“在单张图上修改”,也可以通过全局配置改变后续图形的默认行为。

九、综合示例

下面给出一个简单的综合示例,将图形创建、绘图、修饰与输出串联起来。

小结

Matplotlib 用于把数据转化为可读图形。掌握 Figure 与 Axes 的关系,以及准备数据、绘图、修饰和输出的流程,就能完成基础可视化,并为人工智能实践中的数据探索、训练过程观察与结果展示打下基础。

“点赞有美意,赞赏是鼓励”

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
法国访谈节目《The Bridge》就姆巴佩事件道歉:视频系今年4月录制的节目花絮;我们对该视频给中国及世界各地的人们造成的冒犯深表遗憾

法国访谈节目《The Bridge》就姆巴佩事件道歉:视频系今年4月录制的节目花絮;我们对该视频给中国及世界各地的人们造成的冒犯深表遗憾

都市快报橙柿互动
2026-10-28 06:55:44
樱花演唱会再露"下乳"引争议,粉丝怒问造型团队

樱花演唱会再露"下乳"引争议,粉丝怒问造型团队

浅遇时光
2026-10-26 04:35:36
3-0,3-0,WTT冠军赛乱套了:孙颖莎制造惨案,林诗栋超级大逆转!

3-0,3-0,WTT冠军赛乱套了:孙颖莎制造惨案,林诗栋超级大逆转!

田先生篮球
2026-10-28 06:48:35
老戏骨董勇车险续保被卡一个月,网上维权,吐槽太平洋保险“店大欺客”

老戏骨董勇车险续保被卡一个月,网上维权,吐槽太平洋保险“店大欺客”

大风新闻
2026-10-28 18:21:02
某界汽车,月销量仅剩29辆!

某界汽车,月销量仅剩29辆!

电动内参
2026-10-29 01:32:33
名记:皇马内部不理解姆巴佩发声明为何不通过俱乐部,俱乐部认为处理类似事情更有经验

名记:皇马内部不理解姆巴佩发声明为何不通过俱乐部,俱乐部认为处理类似事情更有经验

尘语者
2026-10-28 17:07:59
皇马官方声明道歉:对中国人民充满尊重,姆巴佩已表达悔意

皇马官方声明道歉:对中国人民充满尊重,姆巴佩已表达悔意

全景体育V
2026-10-28 17:11:47
《伟大的长征》钱壮飞掉队那一段,越想越不对:一个拆过六封绝密电报的人,最后居然被一匹骡子要了命

《伟大的长征》钱壮飞掉队那一段,越想越不对:一个拆过六封绝密电报的人,最后居然被一匹骡子要了命

磊子讲史
2026-10-28 14:55:52
改革开放后有三大耻辱,件件都是民族伤疤。1993年、1999年、2001年这三个年份对中国人而言,每个数字背后都是一段屈辱经历

改革开放后有三大耻辱,件件都是民族伤疤。1993年、1999年、2001年这三个年份对中国人而言,每个数字背后都是一段屈辱经历

扶苏聊历史
2026-10-28 15:05:54
刚刚,皇马全平台致歉!包含海外超3亿粉丝的多个官方账号

刚刚,皇马全平台致歉!包含海外超3亿粉丝的多个官方账号

十点街球体育
2026-10-28 21:01:39
上市后首份财报出炉!宇树科技前三季度实现净利约3.87亿元,同比增长270.54%

上市后首份财报出炉!宇树科技前三季度实现净利约3.87亿元,同比增长270.54%

北京商报
2026-10-28 19:45:08
队报:皇马拒绝了西甲对姆巴佩事件的帮助;皇马高层想看特瓦斯笑话

队报:皇马拒绝了西甲对姆巴佩事件的帮助;皇马高层想看特瓦斯笑话

懂球帝
2026-10-28 08:58:05
连续数月多次触摸女同事大腿,甚至将手伸入其上衣抚摸隐私部位,42岁摄影师被澳门警方拘捕

连续数月多次触摸女同事大腿,甚至将手伸入其上衣抚摸隐私部位,42岁摄影师被澳门警方拘捕

南方都市报
2026-10-28 08:28:04
76岁加拿大华侨坦言:如今中国生活水平,相当于加拿大80年代?

76岁加拿大华侨坦言:如今中国生活水平,相当于加拿大80年代?

爱下厨的阿酾
2026-10-28 18:59:19
令人心碎!“只有几分钟就走了”,长沙35岁教师骤然离世,满墙荣誉,一双年幼儿女

令人心碎!“只有几分钟就走了”,长沙35岁教师骤然离世,满墙荣誉,一双年幼儿女

火山詩话
2026-10-28 11:12:15
李家超深切哀悼国务院原副总理刘延东逝世

李家超深切哀悼国务院原副总理刘延东逝世

看看新闻Knews
2026-10-28 22:43:14
哈尔滨29岁女子外出游玩被蜱虫咬伤,在ICU住了28天,目前四肢瘫痪,丈夫称已花费40万元治疗

哈尔滨29岁女子外出游玩被蜱虫咬伤,在ICU住了28天,目前四肢瘫痪,丈夫称已花费40万元治疗

新京报
2026-10-28 14:36:32
有钱人的想法是摸不透的,你看71岁的周润发,花1.28亿港元买下山顶豪宅,装修好了却一直没住,也没租给别人。

有钱人的想法是摸不透的,你看71岁的周润发,花1.28亿港元买下山顶豪宅,装修好了却一直没住,也没租给别人。

平凡日子生微光
2026-10-26 15:18:30
旭日旗事件越闹越大!陈宇昕三代都是亲日分子,母亲身份已澄清

旭日旗事件越闹越大!陈宇昕三代都是亲日分子,母亲身份已澄清

平老师666
2026-10-27 20:56:19
黄仁勋彻底不装了!中国不买美国英伟达的H200芯片,全球人工智能芯片市场出现了值得关注的变化,国产份额往上顶,对比很扎眼!

黄仁勋彻底不装了!中国不买美国英伟达的H200芯片,全球人工智能芯片市场出现了值得关注的变化,国产份额往上顶,对比很扎眼!

林杰论事
2026-10-28 18:03:38
2026-10-29 02:59:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2258文章数 85关注度
往期回顾 全部

科技要闻

宇树科技前三季净利暴增270%

头条要闻

仅退款后冰柜仍插着电在使用 买家回应

头条要闻

仅退款后冰柜仍插着电在使用 买家回应

体育要闻

0胜4负与篮网国王一桌 热火字母哥赌错了?

娱乐要闻

巾帼不让须眉!章子怡拿下重磅荣誉

财经要闻

iPhone Duo七年等来一场吐槽大会

汽车要闻

首销期权益价23.98万起 2026款理想i6上市

态度原创

旅游
游戏
本地
房产
军事航空

旅游要闻

忻州古城“古城焕新·产城共荣”入选2026中国旅游产业影响力案例

盖世小鸡推出《GTA6》配色手柄 但疑似没有联动

本地新闻

十月奔赴迪庆,解锁梅里日照金山

房产要闻

重新定义城芯院墅生活!33席印德华府,看见湾区墅居的时代答案

军事要闻

伊朗最高领袖最新声明 提到了“结束战争”

无障碍浏览 进入关怀版