美文网首页
Matplotlib中对plt, fig, ax 的浅理解

Matplotlib中对plt, fig, ax 的浅理解

作者: 06am | 来源:发表于2021-10-13 17:26 被阅读0次

    1.参考知乎
    2.参考博客

    名词理解
    一、三段代码:
    # C1
    fig = plt.figure()   # figure是matplotlib中最基础的一个对象,可以理解为是一个总的画布
    ax = fig.add_subplot(2,2,1)  # add_subplot在画布中添加一个axes(可以理解为子区域),并返回这个子区域。
                                 # 参数的前两个表示子区域的行列数,最后一个表示子区域的顺序
    ax.plot([1,2,3])   # 在这个子区域中画图
    plt.show()
    
    # C2
    fig = plt.figure() #  生成一张画布
    ax = plt.subplot(2,2,1) # 和fig.add_subplot作用相同,只是直接调用plt.subplot,会获取当前活跃
                            # 的figure对象,然后添加子区域
    ax.plot([1,2,3])
    plt.show()
    
    # C3
    fig, ax = plt.subplots(2,2)  # 调用subplots会直接添加多个子区域,返回的ax是一个包含所有子区域的矩阵
    ax1 = ax[0,0]  # 通过下标获取需要的子区域
    ax1.plot([1,2,3])
    plt.show()
    

    这里要重点说明一下,matplotlib中,几乎所有的画图操作都是在axes上完成的。例如查看plt.plot()的源码,实际上是获取当前的axes然后在上面作图。
    plt.xxx()方法同理,会获取当前活跃的ax或者fig对象。

    二、运行结果:
    C1 C2 C3
    三、在matplotlib中,有两种画图方式:
    1. plt.figure():通过plt.xxx()方法来画图(模块pyplot中的方法)。这是通过matplotlib提供的一个api,这个api提供了很多基本的function可以让你很快的画出图来,第一种方式的代码来看,先生成了一个Figure画布,然后在这个画布上隐式生成一个画图区域进行画图。但是如果你想要更细致的精调,就要使用另外一种方法。
    fig = plt.figure()  
    ax = plt.subplot() #等价与fig.subplot()
    plt.plot()   #实际上是获取当前的axes然后在上面作图。
                 #等价与ax.plot()
    plt.show()
    
    1. fig, ax = plt.subplots():正统的稍微复杂一点。指定figure和axes,然后对axes单独操作。第二种方式同时生成了Figure和axes两个对象,然后用ax对象在其区域内进行绘图。生成的fig和ax分别对画布Figure和绘图区域Axes进行控制,第一种方式反而显得不是很直观,如果涉及到子图零部件的设置,用第一种绘图方式会很难受。在实际绘图时,也更推荐使用第二种方式。
    plt.style.use('Solarize_Light2')
    fig, ax = plt.subplots(figsize=(12, 7))
    ax.plot(dates, highs, c='red', alpha=0.5)
    ax.plot(dates, lows, c='blue', alpha=0.5)
    ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
    

    相关文章

      网友评论

          本文标题:Matplotlib中对plt, fig, ax 的浅理解

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