欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【matplotlib】matplotlib.pyplot绘图基础结构分析

程序员文章站 2022-03-01 22:18:57
...

matplotlib.pyplot 绘图基础结构分析

官方文档

>> matplotlib基础

可实现基础配置,下例是后端配置,主要是渲染方案相关

matplotlib.use(backend, warn=False, force=True)
# Select the backend used for rendering and GUI integration.
    backend : str
    The backend to switch to. This can either be one of the standard backend names, which are case-insensitive:
    - interactive backends: GTK3Agg, GTK3Cairo, MacOSX, nbAgg, Qt4Agg, Qt4Cairo, Qt5Agg, Qt5Cairo, TkAgg, TkCairo, WebAgg, WX, WXAgg, WXCairo
    - non-interactive backends: agg, cairo, pdf, pgf, ps, svg, template
    or a string of the form: module://my.module.name.

>>> 自定义配置matplotlib包

实现对matplotlib的风格、环境配置。 Customizing Matplotlib with style sheets and rcParams

  • rc 表示run and configure 的缩写,就是配置文件,决定启动和整个包的环境配置。
  • unix系统中其他类似功能的文件: '.xinitrc', '.vimrc' and '.bashrc'.

>> 2D绘图

matplotlib.figure.Figure

  • 基础类: matplotlib.artist.Artist艺术大师
  • 所有绘图元素的顶层容器(囊括了所有绘图所需元素)
  • figure的实例支持回调函数,而且是像素级的回调,用func(fig)方式会触发回调,fig是一个实例。

注:管理着整个画图板

matplotlib.axes

class matplotlib.axes.Axes(fig, rect, facecolor=None, frameon=True, sharex=None, sharey=None, label='', xscale=None, yscale=None, **kwargs)
  • 基类: matplotlib.axes._base._AxesBase
  • 涵盖了大量figure中的元素,包括Axis, Tick, Line2D, Text, Polygon, etc., and sets the coordinate system.
  • 支持回调函数, 关联事件:'xlim_changed' and 'ylim_changed',回调形式func(ax) , ax是Axes 的实例。

注:

  • Axes管理着真正的绘图区
  • axes是axis的复数形式,简单理解axis时表示某一个坐标轴的参数,axes时表示多个坐标轴,也就是理解成一个坐标系,构成一个绘图区

>>> matplotlib.pyplot

  • 提供和MATLAB相似的绘图框架(意思就是和matlab的绘图风格一致, 减少学习成本)
  • 提供了很多方法的封装,主要是实现在figure上进行绘图。
  • pylab模块(一款由python提供的可以绘制二维,三维数据的工具模块,其中包括了绘图软件包 matplotlib)将pyplot和numpy两个包集成到一个里面(统一命名空间)方便交互工作,但是编程是还是建议保持命名空间独立,如下例所示。
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)

>>>> matplotlib.pyplot.plot

  • 一种典型画法,就像山水画、人物画、素描、油彩一样
  • 该画法是在当前figure中绘制图,根据输入的x,y 绘制线或标号
  • 其他画法还有hist,scatter,polar等等
  • 常见调用
plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

fmt = '[marker][line][color]' 风格控制,参考链接

注:

  • 准确的说plot作用在当前Figure实例上的当前Axes上。
  • 默认情况(非主动调用)下就是第1个Figure第1个Axes上,
  • 因为matplotlib模块在引用时默认创建了这些。

内部调用,实际就是gca(),即get current axes的意思

def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
    return gca().plot(
        *args, scalex=scalex, scaley=scaley, **({"data": data} if data
        is not None else {}), **kwargs)

>>>> matplotlib.pyplot.subplot

  • 给当前figure添加一个子绘图
  • 本质是对Figure.add_subplot的封装,所以返回的是一个Axes对象。
  • 最大特点是该函数能够对画布进行均匀切分后创建Axes对象,如分割成3x2的网格,然后取第3个等
  • 常见形式:
subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(ax) 

>>>> matplotlib.pyplot.subplots

  • 同时完成新figure的创建和子绘制subplot的生成(列表形式)
  • 返回结果既有Figure 也有 Axes对象列表可直接使用。
  • 可以看成subplot的高级版本
matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)[source]

>> 3d绘图

>>> mplot3d tutorial

待更新

 

其他参考:

【matplotlib】 图解pyplot figure、subplot、axes、axis的区别