python深入类底层_深入理解matplotlib的底层架构

本文详细介绍了matplotlib库的底层架构,包括FigureCanvas作为画布,Renderer作为渲染器,以及Artist作为图形绘制主体。Artist分为primitives和containers,95%的时间用户与Artist交互。重点讨论了Axes的重要性,它是主要的绘图区域,提供了创建各种图形对象的方法。同时,文章还解释了Subplot、primitives和containers的区别,以及如何通过属性定制图形元素,如Line2D、Rectangle、Text等。最后,探讨了Figure、Axes和Axis容器,以及它们如何管理和存储图形元素。
摘要由CSDN通过智能技术生成

matplotlib 的 API 有 3 个层次

wAAACwAAAAAAQABAEACAkQBADs=matplotlib.backend_bases.FigureCanvas,相当于一块画布,画出的图形都是要落到画布上的

matplotlib.backend_bases.Renderer,渲染器,相当于画笔和颜料,用来渲染图形

matplotlib.artist.Artist,艺术家,可以想象是一个艺术家的手,利用画笔和颜料(renderer)在画布(FigureCanvas)上画图

FigureCanvas 和 Renderer 属于底层的结构,用来控制 backend(用户界面如wxPython或者图形语言如PostScript),Artist 是上层接口,控制 figure,text,lines 等对象。用户 95% 的时间都是在和 Artist 打交道。

Artist 分为两类:primitives 和 containers,primitives 表示我们要渲染在画布上的标准的图形对象:Line2D, Rectangle, Text, AxesImage等,containers 是容纳这些图形对象的地方(Axis, Axes 和 Figure)。标准的流程是创建一个 Figure 实例,然后用 Figure 实例创建一个或多个 Axes 或 Subplot 实例,之后用 Axes 实例的方法创建 primitives。联系平日里画图的起手式,就很好理解了import matplotlib.pyplot as plt

fig = plt.figure()

ax = plt.add_subplot(2, 1, 1) # 创建 Axes 实例

wAAACwAAAAAAQABAEACAkQBADs=

Axes 可能是 matplotlib 中最重要的类,因为用户绝大部分时间都是在围着它转。因为 Axes 是主要的绘图区域,大多数图形对象都落在这个区域内,并且 Axes 还有很多特殊的辅助方法(plot(), text(), hist(), imshow())用来创建大多数通用的 primitives(Line2D, Text, Rectangle, Image),这些辅助方法会拿着用户的数据并根据需要创建 primitives 类型的 Artist 实例,加到相应的 containers 并渲染成图形。

大多数人可能对 Subplot 比较熟悉,它仅仅是 Axes 的一个特例,以 Subplot 实例的规则的行和列的网格形式呈现。如果你想在任意位置创建 Axes,只需要以一个列表[left, bottom, width, height] 为参数调用 add_axes() 方法就可以,列表中的元素是 0 – 1 之间的相对坐标。fig2 = plt.figure()

ax2 = fig2.add_axes([0.15, 0.1, 0.7, 0.3])

wAAACwAAAAAAQABAEACAkQBADs=

继续看我们的例子,t = np.arange(0.0, 1.0, 0.01)

s = np.sin(2*np.pi*t)

line, = ax.plot(t, s, color='blue', lw=2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值