Matplotlib官方文档40万字中文翻译 Part 2 快速入门指南(持续更新)
第二章 快速入门指南本教程介绍 Matplotlib 的基本使用模式和最佳实践帮助快速上手。前置导入importmatplotlib.pyplotaspltimportnumpyasnp2.1 简单示例Matplotlib 将数据绘制在Figure画布/图像窗口中一个 Figure 可包含一个或多个Axes绘图坐标系。Axes 是二维绘图区域依托 x-y 坐标定位点位极坐标为 θ-r、3D 图为 x-y-z。使用pyplot.subplots()是创建带 Axes 的 Figure 最简便的方式# 创建包含单个 Axes 的画布fig,axplt.subplots()# 在坐标系上绘制折线数据ax.plot([1,2,3,4],[1,4,2,3])# 弹出窗口展示图形plt.show()环境说明Jupyter Notebook 等交互式环境可省略plt.show()单元格执行后自动渲染图表。2.2 图表的核心构成2.2.1 Figure 画布整个绘图顶层容器管理所有子 Axes、标题、图例、色条等绘图元素支持嵌套子图。创建画布常用写法# 空白画布无任何坐标系figplt.figure()# 1行1列单个坐标系fig,axplt.subplots()# 2行2列网格坐标系fig,axsplt.subplots(2,2)# 自定义不规则布局左侧一列右侧上下两个坐标系fig,axsplt.subplot_mosaic([[left,right_top],[left,right_bottom]])subplots()与subplot_mosaic()为快捷封装函数也可手动后续给画布添加 Axes。2.2.2 Axes 绘图坐标系依附于 Figure 的核心绘图对象承载数据绘制区域包含 2 个坐标轴3D 为 3 个。区分易混概念Axes完整绘图面板包含坐标轴、刻度、标签、标题、绘图线条等Axis单根 X/Y/Z 坐标轴Axes 常用配置方法set_title()设置坐标系标题set_xlabel()X 轴标签set_ylabel()Y 轴标签绝大多数绘图、轴范围、样式修改都通过 Axes 对象的方法完成。2.2.3 Axis 坐标轴管控坐标轴比例尺、数值范围生成刻度标记与刻度文本。刻度位置由Locator定位器控制刻度显示文本由Formatter格式化器控制二者组合可精细化自定义坐标轴展示效果。2.2.4 Artist 绘图元素艺术家画布上所有可见对象都属于 Artist包括 Figure、Axes、Axis、文字、折线、色块、图形补丁等。画布渲染时会遍历所有 Artist 完成绘制大部分 Artist 绑定在单个 Axes 下无法跨坐标系复用或移动。2.3 绘图函数支持的输入数据类型基础规则绘图接口优先接收numpy.array/numpy.ma.masked_array可被np.asarray()转为数组的类数组对象Pandas Series/DataFrame、numpy 矩阵不保证兼容建议提前转成 NumPy 数组bnp.matrix([[1,2],[3,4]])b_asarraynp.asarray(b)字典/DataFrame 快捷传参支持字典、结构化 NumPy 数组、Pandas DataFrame通过data参数直接传入字段名作为 x、ynp.random.seed(19680801)data{a:np.arange(50),c:np.random.randint(0,50,50),d:np.random.randn(50)}data[b]data[a]10*np.random.randn(50)data[d]np.abs(data[d])*100fig,axplt.subplots(figsize(5,2.7),layoutconstrained)# 直接引用字典key作为x、y、颜色、点大小ax.scatter(a,b,cc,sd,datadata)ax.set_xlabel(entry a)ax.set_ylabel(entry b)2.4 两种编程接口风格Matplotlib 分为面向对象 OO 显式接口和pyplot 隐式接口二选一即可。2.4.1 面向对象 OO 风格推荐正式项目手动创建 Figure 和 Axes调用 Axes 实例方法绘图结构清晰、多子图不易混乱xnp.linspace(0,2,100)fig,axplt.subplots(figsize(5,2.7),layoutconstrained)ax.plot(x,x,labellinear)ax.plot(x,x**2,labelquadratic)ax.plot(x,x**3,labelcubic)ax.set_xlabel(x label)ax.set_ylabel(y label)ax.set_title(Simple Plot)ax.legend()2.4.2 pyplot 函数式风格适合快速交互式调试由plt自动隐式管理画布与当前坐标系代码简短xnp.linspace(0,2,100)plt.figure(figsize(5,2.7),layoutconstrained)plt.plot(x,x,labellinear)plt.plot(x,x**2,labelquadratic)plt.plot(x,x**3,labelcubic)plt.xlabel(x label)plt.ylabel(y label)plt.title(Simple Plot)plt.legend()风格选用建议复杂多子图、封装函数、工程化量化项目强制使用 OO 面向对象写法Jupyter 临时画图、快速验证可视化效果使用 pyplot 简洁写法废弃提醒from pylab import *已被官方强烈弃用禁止使用2.4.3 封装通用绘图辅助函数重复绘图逻辑封装成函数统一接收 Axes 对象作为入参复用性最强defmy_plotter(ax,data1,data2,param_dict):通用绘图辅助函数outax.plot(data1,data2,**param_dict)returnout# 测试调用data1,data2,data3,data4np.random.randn(4,100)fig,(ax1,ax2)plt.subplots(1,2,figsize(5,2.7))my_plotter(ax1,data1,data2,{marker:x})my_plotter(ax2,data3,data4,{marker:o})2.5 Artist 绘图元素样式设置2.5.1 线条基础样式颜色、线宽、线型两种修改方式绘图函数传参直接指定接收绘图返回对象后续调用set_*方法修改fig,axplt.subplots(figsize(5,2.7))xnp.arange(len(data1))# 绘制第一条虚线直接配置样式ax.plot(x,np.cumsum(data1),colorblue,linewidth3,linestyle--)# 接收Line2D对象后续修改线型l,ax.plot(x,np.cumsum(data2),colororange,linewidth2)l.set_linestyle(:)2.5.2 颜色配置Matplotlib 支持多种颜色表达格式散点图可区分填充色与描边色fig,axplt.subplots(figsize(5,2.7))# facecolor内部填充edgecolor边框颜色ax.scatter(data1,data2,s50,facecolorC0,edgecolork)2.5.3 线宽、线型、标记大小规则线宽单位印刷磅pt1pt 1/72 英寸plot()的markersize控制点直径scatter()的s控制点视觉面积内置标记简写o圆点、d菱形、v倒三角、s正方形等fig,axplt.subplots(figsize(5,2.7))ax.plot(data1,o,labeldata1)ax.plot(data2,d,labeldata2)ax.plot(data3,v,labeldata3)ax.plot(data4,s,labeldata4)ax.legend()2.6 图表标注与文本2.6.1 坐标轴标签、标题、自由文本mu,sigma115,15xmusigma*np.random.randn(10000)fig,axplt.subplots(figsize(5,2.7),layoutconstrained)n,bins,patchesax.hist(x,50,densityTrue,facecolorC0,alpha0.75)ax.set_xlabel(长度 [cm])ax.set_ylabel(概率)ax.set_title(蚁兽长度\n实际上并非如此)# 坐标系内自由添加文本ax.text(75,.025,r$\mu115,\ \sigma15$)ax.axis([55,175,0,0.03])ax.grid(True)文本对象可直接附加字体、颜色等属性tax.set_xlabel(my data,fontsize14,colorred)2.6.2 LaTeX 数学公式渲染使用原始字符串r包裹$公式内容$内置解析引擎直接渲染数学符号ax.set_title(r$\sigma_i15$)2.6.3 箭头注释 annotate用箭头指向数据点并附带说明文字fig,axplt.subplots(figsize(5,2.7))tnp.arange(0.0,5.0,0.01)snp.cos(2*np.pi*t)line,ax.plot(t,s,lw2)ax.annotate(local max,xy(2,1),xytext(3,1.5),arrowpropsdict(facecolorblack,shrink0.05))ax.set_ylim(-2,2)2.6.4 图例 legend绘图时指定label调用ax.legend()自动生成图例fig,axplt.subplots(figsize(5,2.7))ax.plot(np.arange(len(data1)),data1,labeldata1)ax.plot(np.arange(len(data2)),data2,labeldata2)ax.plot(np.arange(len(data3)),data3,d,labeldata3)ax.legend()2.7 坐标轴尺度、刻度与特殊数据绘图2.7.1 坐标轴比例线性/对数等默认线性坐标支持对数、指数等非线性尺度示例对数 Y 轴fig,axsplt.subplots(1,2,figsize(5,2.7),layoutconstrained)xdatanp.arange(len(data1))data10**data1 axs[0].plot(xdata,data)# 设置Y轴为对数刻度axs[1].set_yscale(log)axs[1].plot(xdata,data)2.7.2 手动自定义刻度定位与文本set_xticks/set_yticks手动指定刻度位置与显示文字fig,axsplt.subplots(2,1,layoutconstrained)axs[0].plot(xdata,data1)axs[0].set_title(自动刻度)axs[1].plot(xdata,data1)# 指定X轴刻度位置和对应标签axs[1].set_xticks(np.arange(0,100,30),[zero,30,sixty,90])# 只指定Y轴位置使用默认数字标签axs[1].set_yticks([-1.5,0,1.5])axs[1].set_title(手动刻度)2.7.3 日期类型 分类字符串绘图1时间序列绘图frommatplotlib.datesimportConciseDateFormatter fig,axplt.subplots(figsize(5,2.7),layoutconstrained)# 生成连续小时日期数组datesnp.arange(np.datetime64(2021-11-15),np.datetime64(2021-12-25),np.timedelta64(1,h))datanp.cumsum(np.random.randn(len(dates)))ax.plot(dates,data)# 简洁日期格式化器ax.xaxis.set_major_formatter(ConciseDateFormatter(ax.xaxis.get_major_locator()))2分类字符串柱状图fig,axplt.subplots(figsize(5,2.7),layoutconstrained)categories[turnips,rutabaga,cucumber,pumpkins]ax.bar(categories,np.random.rand(len(categories)))注意若传入上千个数字格式的字符串Matplotlib 会全部识别为独立分类造成密密麻麻的刻度务必提前转为数值类型。2.7.4 双Y轴 / 次级坐标轴twinx()共享 X 轴右侧新增独立 Y 轴不同量级数据共用一张图secondary_xaxis/secondary_yaxis增加换算单位的次级坐标轴fig,(ax1,ax3)plt.subplots(1,2,figsize(7,2.7),layoutconstrained)l1,ax1.plot(t,s)# 右侧新建Y轴ax2ax1.twinx()l2,ax2.plot(t,range(len(t)),C1)ax2.legend([l1,l2],[Sine (left),Straight (right)])# 顶部新增角度换算次级X轴弧度 ↔ 角度ax3.plot(t,s)ax3.set_xlabel(Angle [rad])ax4ax3.secondary_xaxis(top,functions(np.rad2deg,np.deg2rad))ax4.set_xlabel(Angle [°])2.8 颜色映射展示三维数据用色彩表达第三维度数值常用pcolormesh、contourf、imshow、带c参数的scatter搭配colorbar颜色标尺frommatplotlib.colorsimportLogNorm X,Ynp.meshgrid(np.linspace(-3,3,128),np.linspace(-3,3,128))Z(1-X/2X**5Y**3)*np.exp(-X**2-Y**2)fig,axsplt.subplots(2,2,layoutconstrained)# 1. 色块热力图pcaxs[0,0].pcolormesh(X,Y,Z,vmin-1,vmax1,cmapRdBu_r)fig.colorbar(pc,axaxs[0,0])axs[0,0].set_title(pcolormesh())# 2. 填充等高线coaxs[0,1].contourf(X,Y,Z,levelsnp.linspace(-1.25,1.25,11))fig.colorbar(co,axaxs[0,1])axs[0,1].set_title(contourf())# 3. 图像显示对数归一化pcaxs[1,0].imshow(Z**2*100,cmapplasma,normLogNorm(vmin0.01,vmax100))fig.colorbar(pc,axaxs[1,0],extendboth)axs[1,0].set_title(imshow() with LogNorm())# 4. 散点颜色映射pcaxs[1,1].scatter(data1,data2,cdata3,cmapRdBu_r)fig.colorbar(pc,axaxs[1,1],extendboth)axs[1,1].set_title(scatter())2.8.1 色板 cmap通过cmap参数指定内置/自定义颜色映射方案。2.8.2 数值归一化 norm用norm实现非线性映射如上例对数LogNorm替代简单的vmin/vmax线性截断。2.8.3 颜色条 colorbar画布级别的标尺组件绑定绘图对象读取映射规则可调整位置、大小、两端延伸箭头。2.9 多画布与复杂子图布局多次调用plt.figure()/plt.subplots()可以生成多个独立窗口画布用变量引用自由操控subplot_mosaic实现跨行跨列的不规则布局fig,axdplt.subplot_mosaic([[upleft,right],[lowleft,right]],layoutconstrained)axd[upleft].set_title(upleft)axd[lowleft].set_title(lowleft)axd[right].set_title(right)2.10 更多阅读如需了解全量绘图类型查阅官方 Axes API 参考文档。

相关新闻

Unity项目中使用C#新特性:通过unity-csharp-patch实现程序集级版本控制

Unity项目中使用C#新特性:通过unity-csharp-patch实现程序集级版本控制

1. 项目概述:为什么Unity开发者需要C#版本自定义? 如果你是一个Unity开发者,尤其是那些对代码质量、开发效率和现代语言特性有追求的开发者,那么你很可能已经对Unity内置的C#版本限制感到头疼。Unity为了确保跨平台兼容性和运行时…

2026/8/12 14:38:47 阅读更多 →
Windows系统IE11无法启动与强制跳转Edge的终极修复指南

Windows系统IE11无法启动与强制跳转Edge的终极修复指南

1. 问题现象与根源剖析如果你还在使用Windows 10或Windows 11系统,并且工作中某些特定的内部系统、老旧的网银插件或者政府税务网站必须依赖Internet Explorer 11(IE11)才能正常运行,那么你很可能遇到过这个令人抓狂的问题&#x…

2026/8/14 11:59:20 阅读更多 →
CentOS 7 UEFI引导故障实战修复:从黑屏到系统恢复全流程

CentOS 7 UEFI引导故障实战修复:从黑屏到系统恢复全流程

1. 从一次真实的服务器启动失败说起 那天下午,运维同事的电话直接打到了我手机上,语气里带着点焦躁:“那台跑着数据库的物理服务器重启后,直接卡在了一个黑屏界面,左上角就一个光标在闪,进不了系统。重启了…

2026/8/12 14:38:47 阅读更多 →

最新新闻

2024年品牌网网站建设全解析:从0到1打造高转化率的专属营销阵地

2024年品牌网网站建设全解析:从0到1打造高转化率的专属营销阵地

在这个流量红利逐渐见顶、信息爆炸的时代,很多企业老板或者说创业者的第一反应往往是:“我是不是该做个抖音账号?”或者“我在小红书能不能火起来?”说实话,这些短视频和社交媒体平台确实重要,它们像是集市里的吆喝,能迅速吸引眼球,带来短暂的喧嚣。但是,如果你的根基…

2026/8/14 13:38:33 阅读更多 →
OpenProject项目管理教程:零成本替代Jira的开源软件,30分钟搭好团队协作台

OpenProject项目管理教程:零成本替代Jira的开源软件,30分钟搭好团队协作台

OpenProject项目管理教程:零成本替代Jira的开源软件,30分钟搭好团队协作台 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira altern…

2026/8/14 13:38:33 阅读更多 →
leetcode2-双指针

leetcode2-双指针

利用两个下标/迭代器控制遍历范围,从而降低枚举复杂度的方法。双指针 │ ├── ① 相向双指针 │ │ │ ├── 两数之和 │ ├── 回文 │ ├── 盛最多水的容器 │ └── 三数之和 │ ├── ② 同向双指针 │ │ │ ├─…

2026/8/14 13:38:33 阅读更多 →
深度解析建设网站目的及功能定位如何驱动企业数字化转型与品牌增长

深度解析建设网站目的及功能定位如何驱动企业数字化转型与品牌增长

在这个人人都在谈流量、谈转化的时代,很多企业老板或者市场负责人都会面临一个看似简单却极其棘手的问题:我到底为什么要建一个网站?更扎心的是,很多团队即使知道了要建站,却往往在方向上迷茫,导致花了冤枉钱,最后做出来的东西既不像名片,也不像店铺,更不像一个能赚钱…

2026/8/14 13:38:33 阅读更多 →
港股十档Tick、逐笔成交和分钟行情数据,做回测终于不用抓瞎了

港股十档Tick、逐笔成交和分钟行情数据,做回测终于不用抓瞎了

港股十档Tick、逐笔成交和分钟行情数据,做回测终于不用抓瞎了 最近把自己折腾得够呛,想复盘港股那几个高频策略,光找数据就快把头发薅秃了。券商给的接口要么只有一档,要么延迟得一塌糊涂,盘口上那些挂单的猫腻根本看不…

2026/8/14 13:38:33 阅读更多 →
RPFM 完整使用指南:用 Rust 与 Qt6 重构的《全面战争》模组开发终极工具

RPFM 完整使用指南:用 Rust 与 Qt6 重构的《全面战争》模组开发终极工具

RPFM 完整使用指南:用 Rust 与 Qt6 重构的《全面战争》模组开发终极工具 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目…

2026/8/14 13:37:32 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →