Matplotlib绘图原理

Matplotlib绘图原理作为数据科学三剑客之一 matplotlib 是最基础和最广泛应用的绘图库 它提供了一套表示和操作图形对象的接口函数

大家好,欢迎来到IT知识分享网。

作为数据科学三剑客之一,matplotlib是最基础和最广泛应用的绘图库,它提供了一套表示和操作图形对象的接口函数。它提供了三种调用接口:

1、pyplot:面向当前子图,封装常用作图API,相当于快捷方式

2、fig/axis:面向对象,提供高级的丰富的接口及图形设置

3、pylab:沿用matlab接口,过于复杂不建议使用。

如下表所示pyplot与fig/axis对应关系,只需要使用pyplot接口作图,而不需要知道是对哪个对象在操作,好处是简单快捷,对于初学者友好,不需要了解对象。

Matplotlib绘图原理

用fig/axis对象作图最大的好处是:所见即所得!每写一行代码可单独运行这一行代码,然后可以实时看到画布上累计的图形结果,这有助于边写代码边调试和修改。

如果用pyplot作图,需要将所有代码整体运行,才能看到画布上图形结果,单独运行则无法得到图形全貌,不直观。当然,用pyplot接口画图,最终也是在操作绘图对象。理解绘图对象,有助于绘制出更美观实用的图形。

注意:这两种接口之间,是可以相互切换的。

在matplotlib中,所有的作图,都是在画布Figure对象中完成的,一个Figure可以有多个坐标系Axis(复数Axes),一个坐标系中可以有多个图集(Artists),Artist是所有图形的基类。

一、画布Figure

画布Figure,是最低层的容器,用于容纳一个或多个子图(axis坐标系)。默认情况下,画布尺寸为物理尺寸(6.4宽, 4.8高),约164×122mm。一张A4纸(210×297mm),在排除边框后只能容纳上下2张画布。如下图所示,灰色背景的是画布区域(默认背景为白色,此处为了区别,将其设置为灰色),中间白色区域以及外围的刻度为坐标系/子图区域。

一张画布中,至少要有一个坐标系,才能够显示出来。

Matplotlib绘图原理

二、子图/坐标系Axis

一个坐标系,相当于一个子图,是所有图形的容器。一个子图中,主要包含两个部分的对象操作,一个是坐标系的基本元素操作,另一个是图形的操作,如下图所示。

Matplotlib绘图原理

坐标系的基本元素包含:标题title,坐标轴标签xlabel/ylabel,刻度xticks/yticks,刻度标签tick_label,图例legend,网格线grid,等等。除了图例一般出现在白色区域内,其他元素一般都出现在白色区域周边外围,相当于占用的是画布的区域位置(单子图情况下,子图区域与画布区域基本是重叠的)。

图形包含:柱状图bar,饼图pie,折线图plot,直方图hist,箱线图boxplot,线条axvline/axhline,数据标签text,等等。这些图形都出现在白色区域里面,属于作图区域,用到的都是数据坐标。

三、绘图流程

一般情况下,绘制图形的流程如下所示。

Matplotlib绘图原理

关于第1、第2两个部分:创建画布与坐标系,可以分开实现,也可以合并实现,甚至可以不用代码实现(默认情况下,自动创建一张画布和一个坐标系)。

第5步调整子图布局,也仅在需要的时候(比如子图间字符重叠),才需要调整子图间的位置空隙大小(可可手动,也可自动)。

四、代码示例

下面示例了三种作图代码,演示了用不同接口作图,其效果是一样的。为了区分画布与子图,特地将画布的背景色设置为grey,方便大家查看。在实际画图,并不需要设置,默认为白色即可。

一、先创建画布,再创建坐标系/子图(用fig/ax对象画图)

fig = plt.figure(figsize=(6.4, 4.8), facecolor=’grey’)

fig.suptitle(‘画布标题’)

ax = fig.gca() # 创建或返回当前坐标系

ax.set_title(‘坐标轴标题’, color=’b’)

fig.show()

二、画布与坐标系同时创建(用pyplot接口画图)

fig, ax = plt.subplots(facecolor=’grey’)

plt.suptitle(‘画布标题’)

plt.title(‘坐标轴标题’, color= ‘b’)

plt.show()

三、直接作图(画布和坐标轴是默认创建)

plt.suptitle(‘画布标题’)

plt.title(‘坐标轴标题’, color= ‘b’)

# # 可以切换到不同的接口作图

fig = plt.gcf()

fig.set_facecolor(‘grey’)

ax = plt.gca()

plt.show()

上述三种代码写法,画出的图形结果都一样,如下图所示。

Matplotlib绘图原理

理解了画图的对象,后续绘制图形就不难了。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/168334.html

(0)
上一篇 2025-01-24 13:25
下一篇 2025-01-24 13:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信