1.1 Matplotlib 简介与安装


文档摘要

1.1 Matplotlib 简介与安装 本节摘要:Matplotlib 是 Python 生态里最基础、最通用的数据可视化库,它把"数据"变成"图"这件事做成了一套可编程的对象体系——你写代码描述要画什么,它负责把像素渲染出来。它最初的接口模仿 MATLAB 的绘图习惯,但本质是 Python 原生的库,几乎所有更高级的可视化工具都建立在它之上。本节先讲清它是什么、和 MATLAB、Excel、Seaborn 这些工具是什么关系,再说明"安装"到底做了什么,最后用一段最短的代码确认环境已经就绪,为后面动手画图铺路。

1.1 Matplotlib 简介与安装

本节摘要:Matplotlib 是 Python 生态里最基础、最通用的数据可视化库,它把"数据"变成"图"这件事做成了一套可编程的对象体系——你写代码描述要画什么,它负责把像素渲染出来。它最初的接口模仿 MATLAB 的绘图习惯,但本质是 Python 原生的库,几乎所有更高级的可视化工具都建立在它之上。本节先讲清它是什么、和 MATLAB、Excel、Seaborn 这些工具是什么关系,再说明"安装"到底做了什么,最后用一段最短的代码确认环境已经就绪,为后面动手画图铺路。

学习目标

阅读完本节,你应当能够:

  1. 用一句话说清 Matplotlib 是什么,以及它解决的核心问题
  2. 讲出它和 MATLAB、Excel、Seaborn 的分工差异,判断什么场合选它
  3. 说清"安装一个绘图库"在概念上到底发生了哪几件事
  4. 用自己的话描述数据可视化流程里 Matplotlib 站在哪个环节
  5. 写出并读懂一段验证环境是否就绪的最短代码

一、它是什么:一张可以编程的坐标纸

先别急着背名词。想象你有一张坐标纸,想在横轴标上时间、纵轴标上温度,然后把每天的气温点连成一条线。用手画,你得量刻度、描点、连线,改一个数据就得擦掉重来。Matplotlib 做的事,就是把这套"手工画图"的动作变成代码:你告诉它数据在哪、用哪种图形、怎么标注,它负责计算坐标、渲染像素、把图呈现在屏幕上或存进文件。

这个定义落到一句话上:Matplotlib 是一个 Python 绘图库,你把数据和一个"怎么画"的描述交给它,它输出一张图。

它最早是 John Hunter 在 2003 年发布的,目标很明确——给 Python 用户一个媲美 MATLAB 绘图能力的工具,让做科学计算的人不必为了画张图再切到 MATLAB 里去。所以它早期的接口风格和 MATLAB 很像:一个命令画一条线,一个命令设标题,用得顺手的人会觉得亲切。但它骨子里是 Python 的东西,和 NumPy、Pandas 天然搭,这点在后面会反复体现。

Matplotlib 能画的图非常杂:折线、散点、柱状、直方图、饼图、箱线图、等高线、热力图、甚至三维图。但这一节我们不急着把所有类型都列出来——那会变成一张没重点的清单。真正要记住的是它"能画什么"背后的那句话:只要你能把数据放进坐标系里,它几乎都能表达。

二、它凭什么站得住:和三个"邻居"的分工

新手上路,最容易困惑的不是 Matplotlib 本身,而是"这么多画图工具,我到底该用哪个"。Excel 能画、MATLAB 能画、Seaborn 也能画,它们和 Matplotlib 到底什么关系?把这个问题想清楚,你就知道 Matplotlib 的位置了。

先说 MATLAB。它是一整个数值计算环境,画图只是它的一部分功能,而且是闭源、要授权的。Matplotlib 从它那里借了接口的"手感",但只做画图这一件事,而且是开源免费的。如果你的工作流已经在 Python 里(数据用 NumPy 算、用 Pandas 整理),再用 MATLAB 画图就得多切一道环境,Matplotlib 让你在同一个脚本里从数据一路做到图。

再说 Excel。它画图是"点鼠标",适合做几张临时的、不改的报表图,但一旦要自动生成、要批量出图、要把画图嵌进数据分析流程,点鼠标就成了瓶颈。Matplotlib 是"写代码",初期上手比点鼠标慢,但换来的是可复现、可自动化、可精细到每一个像素的控制。用哪个,看你要不要"批量"和"精确"。

Seaborn 是最容易和 Matplotlib 混的一个。它其实建立在 Matplotlib 之上,是一层更高级的封装:Matplotlib 给你画笔,Seaborn 给你现成的"统计图模板",默认样式也更现代。你写一行 Seaborn 画一张带置信区间的回归图,底层还是 Matplotlib 在渲染。所以这两者不是二选一的竞争关系,而是"底层"和"上层"的分工——这也是为什么学 Matplotlib 的人,后面用 Seaborn 会特别顺。

工具 本质 画图方式 什么时候选它
Excel 电子表格软件 点鼠标选数据出图 少量、一次性、不要求自动化
MATLAB 闭源数值计算环境 命令式,接口风格类似 已有 MATLAB 工作流且不介意授权
Seaborn Matplotlib 之上的统计图封装 高级 API,模板化 快速出漂亮的统计图
Matplotlib Python 原生绘图库 代码精确控制每个元素 需要可复现、可自动化、精细控制

💡 关键直觉:选工具看的不是"谁更强",而是"你的数据已经在哪、你要不要自动化"。数据已经在 Python 里、又要反复改反复出图,Matplotlib 几乎总是对的那张底牌。

三、它在数据可视化流程里的位置

把 Matplotlib 放进一条完整的数据可视化流水线里看,它的位置会更清楚。通常一条流水线长这样:先准备数据(读文件、算指标、清洗),再决定"用什么图形表达这个数据",然后才是实际画图,接着做样式调整,最后输出成图片或交互界面。Matplotlib 站的是中间偏后的那几环。

看这张图有个要点:Matplotlib 不负责"准备数据"。它假定你交给它的数据已经是干净的、能放进坐标系的数值。数据清洗是 NumPy、Pandas 的活(第 3 章会专门讲怎么配合)。Matplotlib 的职责从"选择图形"开始,一直延伸到"输出"结束——这正是它"专注做画图这一件事"的体现。

也正因为它在流水线里站得靠后,它必须能接住各种来源的数据:列表、NumPy 数组、Pandas 的 DataFrame,甚至直接一个函数算出来的序列。这个"来者不拒"的输入接口,是它能和整个 Python 数据生态咬合的关键。

四、"安装"这件事到底做了什么

"装 Matplotlib"听起来像一句口令,其实拆开是几件具体的事。理解这几件事,比背下某个安装命令有用得多——命令会变,机理不变。

第一件,把库的代码文件放进你的 Python 能找得到的地方。Python 有一套自己的"模块搜索路径",安装器做的事,就是把这个库的代码下载下来,放到那些路径里,这样你写 import matplotlib 时,解释器才知道去哪个文件夹找。

第二件,处理依赖。Matplotlib 不是孤零零一个包,它要借助 NumPy 做数值计算、借助 Pillow 处理图像、借助字体引擎渲染文字。安装器会把这些"帮手"一并装好,或确认它们已经在环境里。缺了任何一个,导入时都会报错。

第三件,可能还要装一个"渲染后端"。Matplotlib 能把图画到屏幕上(交互窗口),也能在没有任何屏幕的服务器上把图直接存成文件。后者靠的就是一个叫"后端"的机制,环境不同,需要的后端不同。这也是为什么有的服务器上"图显示不出来"但其实"图能存下来"——它缺的是显示用的后端,而不是画图能力本身。

⚠️ 常见坑:安装成功 ≠ 在任何地方都能用。很多人装好了,在某个编辑器里一跑就报"找不到模块",往往是因为装进了一个 Python 环境,跑的却是另一个。确认"你在哪个环境里装、又在哪个环境里跑",比反复重装更重要。
💡 关键直觉:把"安装"想成"把工具和它的零件搬进你正在用的那个工具箱",而不是一个玄学开关。装错工具箱(环境),工具再好也拿不到。

五、怎么确认环境已经就绪

装完之后,最实在的验证不是看某个版本号,而是真画一张图出来。下面这段代码是所有后续内容的起点,它同时完成了三件事:确认库能导入、确认能建图、确认能把数据画出来。

import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 1, 3, 5] fig, ax = plt.subplots() # 建一张画布和一个坐标系 ax.plot(x, y) # 把 x、y 连成一条折线 ax.set_title("第一张图") plt.show() # 在屏幕上显示

这段代码里已经埋了本章后面所有内容的地基,值得现在先混个眼熟。plt.subplots() 一次返回两个东西——fig 是画布,ax 是坐标系,这就是 1.2 节要讲的 Figure 和 Axes。ax.plot 是 1.3 节的折线图,set_title 是 1.4 节的参数设置,最后要不要存文件是 1.5 节的事。

如果在没有图形界面的环境里(比如一台远程服务器)跑,plt.show() 可能弹不出窗口。这不代表没装好,只说明这个环境缺"显示"这条通道。你可以换成把图存成文件的思路来验证——那是 1.5 节的内容。现在你只需要记住:图能画出来、能存下来,就算环境就绪了。

六、从 MATLAB 的"影子"到 Python 的"标准答案"

Matplotlib 今天的地位不是谁钦定的,而是二十多年一点点长出来的。它诞生于 2003 年,作者 John Hunter 当时在做神经科学研究,需要在 Python 里画图,却找不到趁手的工具,于是自己动手写了一个,目标很朴素——让 Python 的画图能力够得上 MATLAB。

这也是它接口带着浓浓 MATLAB 味的原因。plotxlabeltitle 这些函数名,几乎是把 MATLAB 的绘图命令照搬了过来。这个设计当年很聪明,一大批从 MATLAB 转过来的人几乎零成本上手。但它也埋下了今天最大的困惑:新手看到 plt.plotax.plot 两套写法,搞不清谁是谁。这个困惑,正是 1.2 节要专门掰开讲的核心。

二十多年过去,Matplotlib 从一个科研圈的小工具,长成了 Python 数据生态里的"基础设施"。它的意义早就超出了"一个库"——它定义了 Python 里"图"的底层标准。Seaborn 在它上面包统计图,Pandas 的绘图功能在它上面薄薄铺了一层,无数论文的插图、无数数据报告的配图,背后渲染的都是它。所以哪怕你以后主要用 Seaborn 或别的上层库,理解 Matplotlib 就等于理解了这些工具共同的底座。

七、几个新手常问的问题

Matplotlib 和 Plotly、Bokeh 是什么关系?

后两者主打交互式图表——鼠标悬停显示数值、缩放、拖拽、联动。Matplotlib 主打静态、可精细控制的图表,虽然也能做一点交互和动画,但不是它的主战场。要交互式仪表盘、探索性看板,选 Plotly 这类更顺手;要论文插图、可复现的静态图、精细到每个像素的控制,选 Matplotlib。两者不是替代关系,是"静态精修"与"交互探索"的分工。

我已经会用 Seaborn 了,还需要学 Matplotlib 吗?

需要,而且更划算。Seaborn 底层就是 Matplotlib,你调 Seaborn 图里的细节——改刻度、加文字、挪图例——最终都要落到 Matplotlib 的对象和参数上。懂了 Matplotlib,Seaborn 对你就不再是黑盒:遇到它默认样式满足不了的需求,你知道该往下钻一层、直接改底层的对象。反过来,只会 Seaborn,遇到边界问题就卡住了。

学 Matplotlib 要背多少函数和参数?

基本不用背。它的接口名大多"见名知意"——set_xlabel 就是设 x 轴标签,set_title 就是设标题。真正要记的是对象之间的关系(画布、坐标系、元素),以及"想改哪里、就去哪个对象上找参数"的思维。具体参数名,用到时查官方文档就行——那本字典很厚,但你只需要会翻,不需要全背。

要点速记

  • Matplotlib 是 Python 原生绘图库,把"数据加描述"变成"图",接口最初仿 MATLAB 但本质是 Python 的东西。
  • 它不负责准备数据,假定输入已经是干净数值,专注从"选图形"到"输出"这一段。
  • 与 MATLAB、Excel、Seaborn 是分工关系:MATLAB 是闭源环境,Excel 是点鼠标,Seaborn 是建立在 Matplotlib 之上的上层封装。
  • 安装 = 放代码 + 处理依赖 + 备好后端,理解机理比背命令重要。
  • 安装成功不等于处处可用,先确认在哪个环境里装、在哪个环境里跑。
  • 验证环境就绪最实在的方式是真画一张图fig, ax = plt.subplots() 是后续一切的地基。

下一节我们钻进那段验证代码里最关键的一行——figax 到底各是什么,Figure 和 Axes 这两个对象是如何撑起整张图的。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U