Matplotlib的子图与颜色映射.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Matplotlib的子图与颜色映射

在数据可视化的世界里,Matplotlib是Python生态中最基础也最强大的工具之一。它的魅力在于能够将抽象的数字转化为直观的图形,但要让图形既“好看”又“好用”,离不开两个核心技巧——子图与颜色映射。子图是组织多幅图形的“骨架”,帮我们把不同视角的数据结果有序排列;颜色映射则是传递信息的“颜料”,用色彩的变化替代冰冷的数值,让数据的差异与规律一目了然。当这两个技巧结合时,我们能创造出更具逻辑性、更有说服力的可视化作品——比如用子图展示同一变量的时间演变,用统一的颜色映射关联不同子图的数值含义,让读者在对比中快速抓住数据的核心故事。本文将从基础到进阶,系统讲解Matplotlib子图与颜色映射的使用方法、协同技巧,以及常见问题的解决策略。

一、子图:构建多图布局的核心工具

子图(Subplot)是Matplotlib中用来在同一画布(Figure)上绘制多幅独立图形的功能。它的本质是将画布分割成网格,每个网格对应一个“子坐标轴”(Axes),我们可以在每个Axes上绘制不同的图形(如线图、散点图、热力图)。理解子图的关键,是掌握如何“分割画布”与“控制每个子图的位置”。

(一)子图的基本概念与创建方法

要创建子图,最常用的两个函数是plt.subplot()与plt.subplots(),它们的区别在于:plt.subplot()更适合逐个创建子图,而plt.subplots()则会一次性生成整个子图网格,返回画布对象(Figure)与子坐标轴数组(AxesArray)。

plt.subplot():逐个创建子图

plt.subplot()的参数格式为plt.subplot(行数,列数,子图索引)。例如,plt.subplot(2,2,1)表示将画布分成2行2列的网格,选中第1个位置(左上角)的子图。需要注意的是,子图索引从左上角开始,按“行优先”顺序排列——第1行从左到右是1、2,第2行是3、4。

举个例子:如果我们想在2x2的网格中绘制四个图形(线图、散点图、柱状图、饼图),可以这样写:

首先用plt.subplot(2,2,1)选中第一个子图,用plt.plot()画一条正弦曲线;

然后用plt.subplot(2,2,2)选中第二个子图,用plt.scatter()画一组随机散点;

接着用plt.subplot(2,2,3)选中第三个子图,用plt.bar()画柱状图;

最后用plt.subplot(2,2,4)选中第四个子图,用plt.pie()画饼图。

这种方法的优点是灵活,适合临时添加子图;但缺点是当子图数量较多时,代码会显得繁琐,且容易忘记“切换”子图位置。

plt.subplots():批量生成子图网格

plt.subplots()是更推荐的方法,它会一次性创建整个子图网格,并返回两个对象:一个是包含所有子图的画布(fig),另一个是按行排列的子坐标轴数组(axs)。例如,fig,axs=plt.subplots(2,2)会生成一个2行2列的子图网格,axs是一个2x2的数组,axs[0,0]对应左上角子图,axs[0,1]对应右上角,axs[1,0]对应左下角,axs[1,1]对应右下角。

用plt.subplots()绘制四个图形的代码会更简洁:

先创建网格:fig,axs=plt.subplots(2,2,figsize=(10,8))(figsize设置画布大小为10英寸宽、8英寸高);

然后在每个axs对象上调用绘图方法:axs[0,0].plot(x,np.sin(x))(左上角子图画正弦曲线),axs[0,1].scatter(x,y)(右上角画散点),axs[1,0].bar(categories,values)(左下角画柱状图),axs[1,1].pie(sizes)(右下角画饼图)。

这里的关键是用axs数组直接操作子图——每个ax对象都有独立的plot()、set_title()、set_xlabel()等方法,比plt全局函数更灵活,尤其适合批量处理子图(比如用循环给所有子图加标题)。

(二)子图的布局调整:从基础到复杂

默认的子图布局往往不够完美——比如子图之间的间距太小导致标签重叠,或者需要更复杂的布局(如“一行一个大子图,下一行三个小子图”)。这时候需要用到布局调整工具,常见的有tight_layout()、subplots_adjust()与GridSpec。

自动调整:tight_layout()

tight_layout()是最简单的调整方法,它会自动计算子图之间的合理间距,避免标签、标题互相遮挡。使用方法很简单:在绘制完所有子图后,调用plt.tight_layout()或fig.tight_lay

您可能关注的文档

文档评论(0)

180****5323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档