前言
Matplotlib是一个可以绘制2D数据图形的python库,利用它可以绘制出各种各样的数据图表。
安装
linux or mac
命令行键入
sudo pip install matplotlib
win
要管理员权限
pip install matplotlib
推荐下载Anaconda,一个python的拓展包,包含了195个关于科学,数学,工程,数据分析的py库,安装一个就可以解决大部分库安装的问题。里面还包括了IPython和Spyder。
运行环境
这一节可以跳过
既然是绘图库,肯定有图片,可是命令行大部分不支持显示图片,所以要用到外部扩展命令行或程序。
下面说四种方法来显示图片:
1.保存成图片,用图片浏览器打开
这个方法在调试时最不好用,不过在批量生成图片时,可以批量保存用。
用savefig
函数,这个以后细说。
2.用matplotlib自带的图片预览器
它自带了一个图片查看器,如果当前命令行不支持图片展示的话,会自动启动这个预览器。
缺点就是每一次都要手动关闭
3.用IPython显示图片
Ipython是一个python命令行扩展。提供一个交互环境,来调试py程序,基本上就像Mathematical一样,重点是它支持直接在命令行里显示图片,就像这样:
4.Spyder
Spyder是一个python的IDE,主要用来做科学计算的,界面类似于MATLAB,直接上图:
正文
废话扯完了,开始正文了。
基本绘图
这一节来画最简单的这个:
分析:
上图是由一条正弦曲线和余弦曲线组成,所以要获取曲线数据才能绘制。
代码:
# -*- coding: utf-8 -*-
#载入pylab
from pylab import *
#用numpy生成X轴数据
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
#用numpy根据numpy生成sin,cos数据
C,S = np.cos(X), np.sin(X)
#根据数据绘制
plot(X,C)
plot(X,S)
#显示图片,如果在命令行模式,会弹出图片预览窗口,
#IPython下,直接在命令行展示图片
show()
本文是用python2.7。
pylab提供了一个针对matplotlib面向对象绘图库的程序界面。它模仿Matlab(TM)开发。
运行
无视这一小节
- 打开ipython,直接复制粘贴上面的代码,按回车,就可以看到图片了,如果提示找不到库,用
sudo pip install +对应包名
就可以了,如果还不行,去问度娘。 - 打开Spyder新建项目,在项目里新建一个py文件,将代码复制粘贴进去,在编辑器的右方或下方的控制台部分,选择
IPython console
,按F5运行,就可以在IPython console里看到图片了。
Numpy
Numpy是一个用来科学计算的库,为Python提供了任意维数的数组对象(ndarray,n-dimensional array object)还有通用函数对象(ufunc,universal function object)。
Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说,这种结构显然不够高效。
Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组,也没有各种运算函数。因而不适合数值运算。
而NumPy的出现弥补了这些不足。(——摘自张若愚的《Python科学计算》)
上面绘制正余弦函数图像时,就用到了numpy来生成数据,C,S = np.cos(X), np.sin(X)
,这时,C、S就是numpy数组对象。
我们要绘图,就得把数据转换成数组对象
numpy数组简单教程
点击每一个函数名,可直接跳转到文档
- 数组里每一个数据的类型都相同
- 由实际所持有的数据和描述这些数据的元数据(metadata)组成
- 生成数组
np.arange()
等同于py的range函数,不过返回是numpy数组np.array(list)
接受一个对象(list,map,etc.),转换成numpy数组*
np.linspace(start,stop,num=50)
返回从start到stop的num个间隔数字组成的数组
- 数组方法
array.tolist()
返回py的list
未完待续
版权声明:本文为博主原创文章,未经博主允许不得转载。