机器学习之numpy和matplotlib学习(四)

来源:互联网 发布:知乎提问如何添加话题 编辑:程序博客网 时间:2024/06/15 05:03

之前我们学习的都是怎么在一个程序里面绘制多张图像,每张图像只有一个坐标轴。
可不可以在一张图像里面有多个坐标轴,每个坐标轴里面可以绘画不同的曲线。
当然可以,今天我们来学习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 pltplt.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 pltplt.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.pyimport matplotlib.pyplot as pltimport numpy as npx=np.linspace(-5,5,50)y1=2*x+1y2=x*xy3=x*x+2*xy4=x+1plt.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分割布局。

更新完毕

原创粉丝点击