zoukankan      html  css  js  c++  java
  • matplotlib学习笔记(二)

    一个绘图对象(figure)可以包含多个轴(axis),在Matplotlib中用轴表示一个绘图区域,可以将其理解为子图。

    在(一)中,绘图对象只包括一个轴,因此只显示了一个轴(子图(Axes) ),个人理解一个子图代表一个轴,可以使用subplot函数快速绘制有多个轴的图表。

    subplot函数的调用形式如下:

    subplot(numRows, numCols, plotNum)

    subplot将整个绘图区域等分为numRows行和 numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。

    如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。

    subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除,也就是之前的子图。

    要注意,再多的子图,仍然归属于一个绘图对象。

    subplot()返回它所创建的Axes对象,可以将它用变量保存起来,然后用sca()交替让它们成为当前Axes对象,并调用plot()在其中绘图。

    如果需要同时绘制多幅图表,可以给figure()传递一个整数参数指定Figure对象的序号,如果序号所指定的figure对象已经存在,将不创建新的对象,而只是让它成为当前的Figure对象。下面的程序演示了如何依次在不同图表的不同 子图中绘制曲线。

    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.figure(1) # 创建图表1
    plt.figure(2) # 创建图表2
    ax1 = plt.subplot(211) # 在图表2中创建子图1
    ax2 = plt.subplot(212) # 在图表2中创建子图2
    
    x = np.linspace(0, 3, 100)
    
    
    for i in xrange(5):
    	plt.figure(1) # 选择图表1
    	plt.plot(x, np.exp(i*x/3))
    	plt.sca(ax1) # 选择图表2的子图1
    	plt.plot(x, np.sin(i*x))
    	plt.sca(ax2) # 选择图表2的子图2
    	plt.plot(x, np.cos(i*x))
    plt.show()
    

     效果

    解释下,首先通过figure()创建了两个图表,它们的序号分别为1和2。然后在图表2中创建了上下 并排的两个子图,并用变量ax1和ax2保存。

    在循环中,先调用figure(1)让图表1成为当前图表,并在其中绘图。然后调用sca(ax1) 和sca(ax2)分别让子图ax1和ax2成为当前子图,并在其中绘图。

    当它们成为当前子图时,包含它们的图表2也自动成为当前图表,因此不需要调用figure(2)依次在图表1和图表2的两 个子图之间切换,逐步在其中添加新的曲线

  • 相关阅读:
    e621. Activating a Keystroke When Any Child Component Has Focus
    e587. Filling Basic Shapes
    e591. Drawing Simple Text
    e595. Drawing an Image
    e586. Drawing Simple Shapes
    e636. Listening to All Key Events Before Delivery to Focused Component
    在 PL/SQL 块的哪部分可以对初始变量赋予新值? (选择1项)
    Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项)
    你判断下面语句,有什么作用?(单选)
    Oracle数据库表空间与数据文件的关系描述正确的是( )
  • 原文地址:https://www.cnblogs.com/wzyuan/p/9589883.html
Copyright © 2011-2022 走看看