Matplotlib
Matplotlib 是一个非常强大的 Python 画图工具; 手中有很多数据, Matplotlib能帮你画出美丽的:
- 线图;
- 散点图;
- 等高线图;
- 条形图;
- 柱状图;
- 3D 图形,
- 甚至是图形动画等等.
Linux
打开 Terminal 窗口, 输入以下内容
# python 3+ 请复制以下在 terminal 中执行
$ sudo apt-get install python3-matplotlib
# python 2+ 请复制以下在 terminal 中执行
$ sudo apt-get install python-matplotlib
MacOS
打开 Terminal 窗口, 输入以下内容
# python 3+ 请复制以下在 terminal 中执行
$ pip3 install matplotlib
# python 2+ 请复制以下在 terminal 中执行
$ pip install matplotlib
Windows
Windows 的安装最麻烦. 我们一步步来:
- 确保你有安装 Visual Studio;
- 去这个网址: https://pypi.python.org/pypi/matplotlib/
- 找到一个适合你自己 python 版本的 wheel (.whl) 文件. (如下图)
matplotlib-1.5.3-cp35-cp35m-win32.whl (md5)
1.5.3 : plt版本
cp35 : python 版本
win32 : Windows 32位系统
whl : wheel 文件
- 用 CMD 找到这个 .whl 文件目录, 然后 pip 安装. 以
matplotlib-1.4.3-cp35-none-win32.whl
文件为例:
$ cd python_work # 用 cd 去到你下载的文件目录
# 如果是 python 3+ 版本, 像下面一样
python_work$ python -m pip3 install matplotlib-1.4.3-cp35-none-win32.whl
- 如果安装不成功, 还有一种方法可以简便安装所有科学运算模块. 可以搜索一下
Anaconda python
基础应用
使用import
导入模块matplotlib.pyplot
,并简写成plt
使用import
导入模块numpy
,并简写成np
import matplotlib.pyplot as plt
import numpy as np
使用np.linspace
定义x:范围是(-1,1);个数是50. 仿真一维数据组(x
,y
)表示曲线1.
x = np.linspace(-1, 1, 50)
y = 2*x + 1
使用plt.figure
定义一个图像窗口. 使用plt.plot
画(x
,y
)曲线. 使用plt.show
显示图像.
plt.figure()
plt.plot(x, y)
plt.show()
此外,还可以绘制很多不同的图案,就像下面几个例子:
曲线图
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> a = np.linspace(0,10,100)
>>> b = np.exp(-a)
>>> plt.plot(a,b)
>>> plt.show()
>>> import matplotlib.pyplot as plt
>>> from numpy.random import normal,rand
>>> x = normal(size=200)
>>> plt.hist(x,bins=30)
>>> plt.show()
散点图
>>> import matplotlib.pyplot as plt
>>> from numpy.random import rand
>>> a = rand(100)
>>> b = rand(100)
>>> plt.scatter(a,b)
>>> plt.show()
3D 图
>>> from matplotlib import cm
>>> from mpl_toolkits.mplot3d import Axes3D
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> fig = plt.figure()
>>> ax = fig.gca(projection='3d')
>>> X = np.arange(-5, 5, 0.25)
>>> Y = np.arange(-5, 5, 0.25)
>>> X, Y = np.meshgrid(X, Y)
>>> R = np.sqrt(X**2 + Y**2)
>>> Z = np.sin(R)
>>> surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
>>> plt.show()
更多例子
Image plot
Contour plot
Scatter plot
Polar plot
Line plot
3-D plot
Image plot