之前我们学习的都是怎么在一个程序里面绘制多张图像,每张图像只有一个坐标轴。
可不可以在一张图像里面有多个坐标轴,每个坐标轴里面可以绘画不同的曲线。
当然可以,今天我们来学习plt.subplot( )函数的使用。参看官方文档http://matplotlib.org/users/pyplot_tutorial.html。
先来说一下这个函数plt.subplot( )它与plt.plot( )相差了一个sub。sub的英文意思是子分块。
先来讲一下代码:
#plt.plot()函数里面有两个数组,第一个数组是x的取值,第二个数组是y的取值。
#后面的‘ro’代表绘制出来的是圆点而不是一条直线。
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
#plt.axis()函数是绘制时候x和y的取值范围,这里x是【0到6】,y是【0到20】
plt.axis([0, 6, 0, 20])
对上面讲解的完整演示代码如下:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()
结果如下:
这里补充两点
1.我们知道plt.axis()函数是绘制时候x和y的取值范围,这里x是【0到6】,y是【0到20】
也可以分别设置x和y的绘制时候的取值范围:
#对x设置绘制时候的取值范围。
plt.xlim(0,6)
#对x设置绘制时候的取值范围。
plt.ylim(0,20)
#等价于plt.axis([0, 6, 0, 20])
2 .我们之前的plt.plot([1,2,3,4], [1,4,9,16], 'ro')中传入了两组数据,如果只传入一组数据的话,默认为y的数据。
实践如下:
import matplotlib.pyplot as plt
plt.plot([1,4,9,16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()
结果如下:
可以看到是有差别的。
下面学习一下:subplot(numRows, numCols, plotNum)。
图表的整个绘图区域被分成numRows行和numCols列。
plotNum参数指定创建的图像对象所在的区域。
如:(2,2,1)相当于把一个figure分成一个2x2的网格布局。plotNum等于1,也就是绘制的图像是网格布局的第一块区域。
代码演示:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : SundayCoder-俊勇
# @File : figure3.py
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-5,5,50)
y1=2*x+1
y2=x*x
y3=x*x+2*x
y4=x+1
plt.figure()
# 第一个子图
plt.subplot(2,2,1)
plt.plot(x,y1)
plt.title("first subplot")
# 第二个子图
plt.subplot(2,2,2)
plt.plot(x,y2)
plt.title("second subplot")
# 第三个子图
plt.subplot(2,2,3)
plt.plot(x,y3)
plt.title("third subplot")
# 第四个子图
plt.subplot(2,2,4)
plt.plot(x,y4)
plt.title("Fourth subplot")
plt.show()
结果:
学习完毕
这里补充一点。例如,plt.subplot(2,2,4)没有逗号分隔也可以的。
可以变成plt.subplot(2,2,4)
你试一下??
一样可以,但是如果数字大于10的话就必须使用逗号分隔。
一般我们用的最多的分隔是2*2网格,分割多了图像太小不好观察,到后面机器学习如果用到的话一般都是2x2分割布局。