matplotlib usage guide notes

主要参考:
usage-guide

General Concepts

fffff

hierarchy

分层,依次是 “state-machine environment”, OO interface。

在层次结构的顶部是matplotlib“state-machine environment”,它由matplotlib.pyplot模块提供。 在此级别,简单函数用于将绘图元素(线条,图像,文本等)添加到当前图形中的当前轴。

层次结构中的下一级是Object-oriented interface的第一级,其中pyplot仅用于少数函数,例如图形创建,并且用户显式创建并跟踪图形和轴对象。在此级别,用户使用pyplot来创建图形,并且通过这些图形,可以创建一个或多个Axes对象

对于更多的控制 - 这对于在GUI应用程序中嵌入matplotlib图是必不可少的 - 可以完全删除pyplot层级,留下纯粹面向对象的方法

figure

承载所有元素,包括child Axes,“special” artists(titles,legends,等等), 以及画布canvas

一个figure可以有多个Axes

Axes

即所谓的“plot”,实际被画出来的东西,一个figure可以有多个Axes,但一个Axes只能从属于一个figure

Axes包含两个(或3D的三个)Axis对象(注意Axes和Axis之间的差异),axis对象负责控制数据大小(数据限制也可以通过来设置。 Axes的方法set_xlim()和set_ylim())。 每个Axes都有一个title(通过set_title()设置),一个x-label(通过set_xlabel()设置)和一个通过set_ylabel()设置的y-label

Axis

Axis负责设置图形(大小)限制并生成tick(轴上的刻度)和ticklabels(标记刻度线的字符串)。即tick相关的属性、对象都是通过Axis管理的

tick的位置由Locator对象确定,ticklabel字符串由Formatter对象确定。

Artist(figure上所看到的一切)

基本上你在图上看到的一切都是Artist(甚至是图figure,Axes和Axis objects)。 这包括Text对象,Line2D对象,集合对象,Patch对象…

plotting functions的输入:优先是np.array或者np.ma/masked_array

Dataframe Series最好通过.values转化

pylab:只是把pyplot和numpy结合,已经deprecated,不建议使用



Coding Style:官方推荐两种

Of the different styles, there are two that are officially supported. Therefore, these are the preferred ways to use matplotlib.

pyplot style

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.2)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()

先import numpy,pyplot等,然后逐个调用,例如,np.arange,np.zeros,np.pi,plt.figure,plt.plot,plt.show等。使用pyplot接口创建图形,然后**使用对象方法即Object-oriented interface**完成剩余的工作

Backends:可以理解为“绘图引擎”

为了支持所有各种用途(在Jupyter notebooks中做数据分析,弹出windows type commands等等),matplotlib可以针对不同用途进行输出,而对于不同用途实现输出的东西称为后端; “前端”是面向用户的代码,即plotting code,而**“后端”完成幕后的所有艰苦工作以制作图形**。

如果您的脚本依赖于特定的后端,则可以使用use()函数:

import matplotlib
matplotlib.use('PS')   # generate postscript output by default

如果使用use()函数,则必须在导入matplotlib.pyplot之前完成此操作。 导入pyplot后调用use()将不起作用如果用户想要使用不同的后端,则使用use()将需要更改代码。 因此,除非绝对必要,否则应避免显式调用use()。



交互模式interactive mode:即动态地向Axes/plot添加、删除Artists

开启interactive mode:

可以通过matplotlib.interactive()设置,并且可以通过matplotlib.is_interactive()查询其值

或者通过matplotlib.pyplot.ion()打开,并通过matplotlib.pyplot.ioff()关闭。

Non-interactive mode:通过plt.show()

在要生成一个或多个图形的脚本中使用Non-interactive mode,并在结束或生成一组新图形之前显示它们。 在这种情况下,使用show()显示图形并阻止下面的plotting code执行,直到手动销毁它们。

同一个图片,plt.show只能执行一次,若要多次执行,可以用for,但是后面的figure只有当手动关闭前一张figure之后才会出现

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值