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的两 个子图之间切换,逐步在其中添加新的曲线

  • 相关阅读:
    HDU 4901 The Romantic Hero
    COGS8 备用交换机
    POJ 1466 Girls and Boys
    bzoj3442 学习小组
    bzoj2054 疯狂的馒头
    POJ2135 Farm Tour
    POJ 1149 PIGS
    Html5 Canvas学习之路(五)
    关于跨域简单总结
    vue-baidu-map 进入页面自动定位的解决方案!
  • 原文地址:https://www.cnblogs.com/wzyuan/p/9589883.html
Copyright © 2011-2022 走看看