美文网首页
Matplotlib官方文档 1 - A Simple Exam

Matplotlib官方文档 1 - A Simple Exam

作者: 蜘蛛鱼 | 来源:发表于2021-04-23 16:38 被阅读0次

    对matplotlib的官方文档做一个简单的总结方便查阅。
    来源:https://matplotlib.org/stable/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py

    首先导入Matplotlib与Numpy:

    import matplotlib.pyplot as plt
    import numpy as np
    

    一个简单的例子

    在Matplotlib中,整个图像为一个Figure对象。
    在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域,可以是x-y坐标,或极坐标,或x-y-z的3D坐标。
    创建一个带有axes的figure的方法:

    fig, ax = plt.subplots() # 创建一个带有一个axes的figure
    ax.plot([1,2,3,4],[1,4,2,3]) #在axes上画图
    

    直接画图会在当前的axes自动画图,若没有会创建一个axes和它的父figure。所以可以直接:

    plt.plot([1,2,3,4],[1,4,2,3])
    

    Figure的成分

    这个图可以帮助理解Matplotlib中figure的各种成分。


    Figure

    Figure指整个图像,可以包含多个Axes。创建Figure的方法如下:

    fig = plt.figure()  # 没有Axes的空figure
    fig, ax = plt.subplots()  # 包含一个Axes
    fig, axs = plt.subplots(2, 2)  # 包含2乘2个Axes
    

    通常是一起创建Figure与Axes,不过也可以先创建Figure之后再添加Axes。

    Axes

    Axes就是你画的一个plot的区域。一个Figure包含多个Axes,但一个Axes只能在一个Figure里面。
    Axes包含几个Axis(坐标轴)对象。每个Axes包含一个标题(set_title()),x-label(set_xlabel())与y-label(set_ylabel())。

    Axis

    Axis即坐标轴,他们负责图表的limits,刻度以及刻度的标签。刻度的位置由Locator对象来决定,刻度的标签字符串由 Formatter来形成。LocatorFormatter一起形成合适的坐标轴的可视化。

    Artist

    基本上,Figure上你能看到的所有东西都是一个artist,甚至包括Figures,Axes等对象。它包括Text对象,Line2D对象,collections对象,...等等。

    画图时候的输入

    所有的画图函数都可以输入numpy.array或者numpy.ma.masked_arraypandas的对象或者numpy.matrix有可能不行,所以画图前最好都转化为numpy.array对象。

    面向对象的界面与pyplot界面

    有两种方法使用Matplotlib画图:

    1. 面向对象的方法,创建figures与axes,再调用他们的方法(Methods)。
      比如:
    x = np.linspace(0, 2, 100)
    
    #虽然在面向对象的方法,但是我们创建figure还是使用`.pyplot.figure`。
    fig,ax = plt.subplots() # 创建一个figure与axes
    ax.plot(x, x, label = 'linear') # 在axes画图
    ax.plot(x, x**2, label = 'quadratic') # 在axes画更多数据
    ax.plot(x, x**3, label = 'cubic') # 继续在axes添加……
    ax.set_xlabel('x label') # 给axes添加x-label
    ax.set_ylabel('y label') # 给axes添加y-label
    ax.set_title('Simple Plot') # 给axes添加标题
    ax.legend() # 添加legend
    
    1. 利用pyplot自动创建与修改figures与axes,利用pyplot的函数来画图。
      比如:
    x = np.linspace(0, 2, 100)
    
    plt.plot(x, x, label='linear')  # 在默认axes画图
    plt.plot(x, x**2, label='quadratic')  # etc.
    plt.plot(x, x**3, label='cubic')
    plt.xlabel('x label')
    plt.ylabel('y label')
    plt.title("Simple Plot")
    plt.legend()
    

    两种方法都可以用来Matplotlib画图,不过通常建议在可交互的plotting(比如Jupyter Notebook)当中使用pyplot方式,在非交互的情况下(如在函数中或者script中)使用面向对象的方式。

    创建画图函数

    我们有时候会需要用不同的数据重复画同一个图,这时候创建一个函数会非常方便。比如:

    def my_plotter(ax, data1, data2, param_dict):
        """
        用于画图的一个函数。
    
        参数
        ----------
        ax : Axes
            要画的axes
    
        data1 : array
           The x data
    
        data2 : array
           The y data
    
        param_dict : dict
           Dictionary of kwargs to pass to ax.plot
    
        Returns
        -------
        out : list
            list of artists added
        """
        out = ax.plot(data1, data2, **param_dict)
        return out
    

    之后可以这么使用:

    data1, data2, data3, data4 = np.random.randn(4,100)
    fig,ax = plt.subplots(1,1)
    my_plotter (ax, data1, data2, {'marker': 'x'})
    

    创建两个subplots时:

    fig, (ax1, ax2) = plt.subplots(1, 2)
    my_plotter(ax1, data1, data2, {'marker': 'x'})
    my_plotter(ax2, data3, data4, {'marker': 'o'})
    

    Backend与Performance

    此部分详见原链接。

    后端的设置方法有三种:

    1. The rcParams["backend"] parameter in your matplotlibrc file
    2. The MPLBACKEND environment variable
    3. The function matplotlib.use()

    相关文章

      网友评论

          本文标题:Matplotlib官方文档 1 - A Simple Exam

          本文链接:https://www.haomeiwen.com/subject/krwcrltx.html