找回密码
 会员注册
查看: 39|回复: 0

PythonMatplotlibfig,ax=plt.subplots()返回的fig和ax是什么?

[复制链接]

2

主题

0

回帖

7

积分

新手上路

积分
7
发表于 2024-9-4 22:20:16 | 显示全部楼层 |阅读模式
【Python】【Matplotlib】fig,ax=plt.subplots()返回的fig和ax是什么?🌈个人主页:高斯小哥🔥高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈希望得到您的订阅和支持~💡创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)🌵文章目录🌵📊一、fig和ax简介🖼️二、fig的用法设置图形大小设置图形保存图形显示图形📈三、ax的用法绘制图形设置坐标轴标签和刻度设置坐标轴范围添加图例完整代码🎨四、多个子图🔍五、fig和ax的交互使用fig.add_axes()添加Axes对象使用ax.figure获取所属的Figure对象共享坐标轴🎭六、fig和ax的进一步定制自定义颜色、线条样式和标记添加网格、边框和背景色🤝七、期待与你共同进步🎉结语🔍关键词📊一、fig和ax简介  在Matplotlib库中,fig,ax=plt.subplots()是一个常用的函数,用于创建一个新的图形窗口以及一个或多个子图。返回的fig和ax对象分别代表了整个图形和其中的一个子图。fig是Figure类的实例,代表整个绘图窗口,而ax是Axes类的实例,代表其中的一个子图或坐标轴。  通过fig和ax,我们可以方便地对整个图形和子图进行各种操作,比如设置、坐标轴标签、刻度等。🖼️二、fig的用法fig对象提供了许多方法和属性,用于控制整个图形的外观和行为。以下是一些常用的用法:设置图形大小可以通过figsize参数在创建图形时设置其大小(宽和高,单位为英寸)。importmatplotlib.pyplotaspltfig,ax=plt.subplots(figsize=(8,6))123设置图形使用suptitle()方法可以为整个图形设置。fig.suptitle('MyTitle',fontsize=14)1保存图形使用savefig()方法可以将整个图形保存为图片文件。fig.savefig('my_figure.png')1显示图形通过plt.show()可以显示整个图形。plt.show()1📈三、ax的用法ax对象代表了图形中的一个子图,它提供了丰富的接口用于绘制图形和设置坐标轴属性。绘制图形使用ax对象的方法可以直接在子图上绘制各种图形,如折线图、散点图等。importnumpyasnpx=np.linspace(0,10,100)y=np.sin(x)fig,ax=plt.subplots()ax.plot(x,y)1234567设置坐标轴标签和刻度使用set_xlabel(),set_ylabel(),set_xticks(),set_yticks()等方法可以设置坐标轴的标签和刻度。ax.set_xlabel('X-axis')ax.set_ylabel('Y-axis')ax.set_xticks(np.arange(0,11,2))ax.set_yticks([-1,0,1])1234设置坐标轴范围使用set_xlim()和set_ylim()方法可以设置坐标轴的范围。ax.set_xlim(0,10)ax.set_ylim(-1.5,1.5)12添加图例如果在一个子图上绘制了多个图形,可以使用legend()方法添加图例。ax.plot(x,np.sin(x),label='sin(x)')ax.plot(x,np.cos(x),label='cos(x)')ax.legend()123完整代码importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0,10,100)y=np.sin(x)fig,ax=plt.subplots()ax.plot(x,y)ax.set_xlabel('X-axis')ax.set_ylabel('Y-axis')ax.set_xticks(np.arange(0,11,2))ax.set_yticks([-1,0,1])ax.set_xlim(0,10)ax.set_ylim(-1.5,1.5)ax.plot(x,np.sin(x),label='sin(x)')ax.plot(x,np.cos(x),label='cos(x)')ax.legend()plt.show()123456789101112131415161718192021🎨四、多个子图  plt.subplots()函数还可以用于创建包含多个子图的图形。通过指定nrows和ncols参数,可以定义子图的行数和列数。importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(0,10,100)fig,axs=plt.subplots(nrows=2,ncols=2)#axs是一个2x2的数组,每个元素都是一个Axes对象axs[0,0].plot(x,np.sin(x))axs[0,1].plot(x,np.cos(x))axs[1,0].plot(x,np.tan(x))axs[1,1].plot(x,1/x)plt.show()1234567891011121314在这个例子中,axs是一个2x2的NumPy数组,每个元素都是一个Axes对象,代表图形中的一个子图。我们可以通过索引axs[i,j]来访问和操作特定的子图。🔍五、fig和ax的交互  fig和ax对象之间也有一些交互。例如,我们可以通过fig.add_axes()方法手动向图形中添加一个Axes对象,或者通过ax.figure属性获取一个Axes对象所属的Figure对象。下面,我们将深入探讨fig和ax之间的交互,并通过示例代码展示如何使用它们来创建更复杂的图形布局和交互。使用fig.add_axes()添加Axes对象  虽然plt.subplots()是一种非常方便的创建子图的方法,但有时我们可能需要更灵活地控制子图的位置和大小。这时,可以使用fig.add_axes()方法来手动添加Axes对象。importmatplotlib.pyplotasplt#创建一个图形对象fig=plt.figure()#使用add_axes()方法添加Axes对象#参数是一个四元组,表示子图在图形中的位置(左下角x,左下角y,宽度,高度)#这些值都是相对于图形大小的分数ax1=fig.add_axes([0.1,0.1,0.8,0.8])#在第一个Axes对象上绘制图形ax1.plot([1,2,3,4],[1,4,2,3])#还可以继续添加更多的Axes对象ax2=fig.add_axes([0.2,0.5,0.4,0.3])ax2.plot([1,2,3,4],[4,3,2,1])#显示图形plt.show()12345678910111213141516171819在上面的代码中,我们手动指定了每个Axes对象在图形中的位置和大小。这种方法比plt.subplots()更底层,因此提供了更大的灵活性。使用ax.figure获取所属的Figure对象  每个Axes对象都有一个figure属性,它指向该Axes对象所属的Figure对象。通过这个属性,我们可以访问和操作整个图形。importmatplotlib.pyplotasplt#创建一个图形和一个Axes对象fig,ax=plt.subplots()#使用ax.figure访问所属的Figure对象print(ax.figureisfig)#输出:True#也可以通过ax.figure来操作整个图形ax.figure.suptitle('MyTitle')#显示图形plt.show()12345678910111213在这个例子中,我们验证了ax.figure是否与通过plt.subplots()返回的fig对象相同,并展示了如何使用ax.figure来设置整个图形的。共享坐标轴  有时,我们可能希望多个子图共享一个或多个坐标轴。Matplotlib提供了sharex和sharey参数来实现这一功能。importmatplotlib.pyplotasplt#创建两个子图,并共享x轴fig,axs=plt.subplots(nrows=2,sharex=True)axs[0].plot([1,2,3],[1,2,3])axs[1].plot([1,2,3],[3,2,1])#显示图形plt.show()12345678910在这个例子中,两个子图共享了x轴,因此它们的x轴刻度和标签是相同的。  通过了解fig和ax之间的交互,我们可以更灵活地控制图形的布局和外观,从而创建出更具吸引力的可视化效果。无论是通过plt.subplots()创建子图,还是手动使用fig.add_axes()添加子图,我们都能够充分利用Matplotlib的强大功能来创建出符合我们需求的图形。🎭六、fig和ax的进一步定制  除了基本的绘图和坐标轴设置,fig和ax还提供了许多高级功能,允许我们对图形进行更深入的定制。自定义颜色、线条样式和标记在绘制图形时,我们可以自定义线条的颜色、样式(实线、虚线等)以及数据点的标记样式。ax.plot(x,y,color='red',linestyle='--',marker='o')1添加网格、边框和背景色通过grid(),spines属性以及patch对象,我们可以为图形添加网格线、控制边框的显示以及设置背景色。importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(0,10,100)y=np.sin(x)fig,ax=plt.subplots()ax.grid(True)#显示网格线ax.spines['top'].set_visible(False)#隐藏上边框ax.spines['right'].set_visible(False)#隐藏右边框fig.patch.set_facecolor('lightgrey')#设置背景色为浅灰色#显示图形plt.show()123456789101112131415🤝七、期待与你共同进步  🌱亲爱的读者,非常感谢你每一次的停留和阅读!你的支持是我们前行的最大动力!🙏  🌐在这茫茫网海中,有你的关注,我们深感荣幸。你的每一次点赞👍、收藏🌟、评论💬和关注💖,都像是明灯一样照亮我们前行的道路,给予我们无比的鼓舞和力量。🌟  📚我们会继续努力,为你呈现更多精彩和有深度的内容。同时,我们非常欢迎你在评论区留下你的宝贵意见和建议,让我们共同进步,共同成长!💬  💪无论你在编程的道路上遇到什么困难,都希望你能坚持下去,因为每一次的挫折都是通往成功的必经之路。我们期待与你一起书写编程的精彩篇章!🎉  🌈最后,再次感谢你的厚爱与支持!愿你在编程的道路上越走越远,收获满满的成就和喜悦!祝你编程愉快!🎉🎉结语  通过本博客的学习,你应该已经对fig和ax的用法有了更深入的了解。Matplotlib是一个强大而灵活的绘图库,掌握其基本用法和高级定制技巧将为你的数据分析和可视化工作带来极大的便利。不断学习和实践,你将能够创建出更加精美和有效的数据可视化作品。感谢阅读,祝你学习愉快,收获满满!🚀🔍关键词  Matplotlib,fig,ax,subplots,数据可视化,图形定制,坐标轴设置,文本注释,箭头,共享坐标轴,学习资源,扩展阅读
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 01:11 , Processed in 1.524703 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表