在使用Numpy之前,需要了解一些画图的基础。
Matplotlib是一个类似Matlab的工具包,主页地址为
导入 matplotlib
和 numpy
:
%pylab
plot(y)
plot(x, y)
plot(x, y, format_string)
只给定 y
值,默认以下标为 x
轴:
%matplotlib inline
x = linspace(0, 2 * pi, 50)
plot(sin(x))
给定 x
和 y
值:
plot(x, sin(x))
多条数据线:
plot(x, sin(x),
x, sin(2 * x))
使用字符串,给定线条参数:
plot(x, sin(x), 'r-^')
多线条:
plot(x, sin(x), 'b-o',
x, sin(2 * x), 'r-^')
更多参数设置,请查阅帮助。事实上,字符串使用的格式与Matlab相同。
scatter(x, y)
scatter(x, y, size)
scatter(x, y, size, color)
假设我们想画二维散点图:
plot(x, sin(x), 'bo')
可以使用 scatter
达到同样的效果:
scatter(x, sin(x))
事实上,scatter函数与Matlab的用法相同,还可以指定它的大小,颜色等参数:
x = rand(200)
y = rand(200)
size = rand(200) * 30
color = rand(200)
scatter(x, y, size, color)
# 显示颜色条
colorbar()
使用figure()命令产生新的图像:
t = linspace(0, 2*pi, 50)
x = sin(t)
y = cos(t)
figure()
plot(x)
figure()
plot(y)
或者使用 subplot
在一幅图中画多幅子图:
subplot(row, column, index)
subplot(1, 2, 1)
plot(x)
subplot(1, 2, 2)
plot(y)
默认多次 plot
会叠加:
plot(x)
plot(y)
可以跟Matlab类似用 hold(False)关掉,这样新图会将原图覆盖:
plot(x)
hold(False)
plot(y)
# 恢复原来设定
hold(True)
可以在 plot
中加入 label
,使用 legend
加上图例:
plot(x, label='sin')
plot(y, label='cos')
legend()
或者直接在 legend
中加入:
plot(x)
plot(y)
legend(['sin', 'cos'])
可以设置坐标轴的标签和标题:
plot(x, sin(x))
xlabel('radians')
# 可以设置字体大小
ylabel('amplitude', fontsize='large')
title('Sin(x)')
用 'grid()' 来显示网格:
plot(x, sin(x))
xlabel('radians')
ylabel('amplitude', fontsize='large')
title('Sin(x)')
grid()
清除已有的图像使用:
clf()
关闭当前图像:
close()
关闭所有图像:
close('all')
灰度图片可以看成二维数组:
# 导入lena图片
from scipy.misc import lena
img = lena()
img
我们可以用 imshow()
来显示图片数据:
imshow(img,
# 设置坐标范围
extent = [-25, 25, -25, 25],
# 设置colormap
cmap = cm.bone)
colorbar()
更多参数和用法可以参阅帮助。
这里 cm
表示 colormap
,可以看它的种类:
dir(cm)
使用不同的 colormap
会有不同的显示效果。
imshow(img, cmap=cm.RdGy_r)
在脚本中使用 plot
时,通常图像是不会直接显示的,需要增加 show()
选项,只有在遇到 show()
命令之后,图像才会显示。
从高斯分布随机生成1000个点得到的直方图:
hist(randn(1000))
更多例子请参考下列网站: