前言
Matplotlib是Python的绘图库,它提供了一整套和 matlab 相似的命令 API,可以生成你所需的出版质量级别的图形。我们已经学习了一系列统计图来描绘两个变量间的基本关系,同时也学习了如何高度自定义统计的呈现样式,但是,仅仅使用这些图形并不足以应对所有场景。例如,我们需要可视化地显示降雨在各个地区的分布情况。 因此,我们需要更多的实用图形来表达现实世界的复杂关系。
可视化二维数组的内容
让我们从最简单的场景开始,假设我们有一个二维数组——著名的分形形状Mandelbrot
,我们想将其可视化。 首先需要创建一个二维数组,然后调用plt.imshow()将其可视化。
import numpy as np
import matplotlib.cm as cm
from matplotlib import pyplot as plt
def iter_count(c, max_iter):
x = c
for n in range(max_iter):
if abs(x) > 2.:
return n
x = x ** 2 + c
return max_iter
n = 512
max_iter = 64
xmin, xmax, ymin, ymax = -2.2, .8, -1.5, 1.5
x = np.linspace(xmin, xmax, n)
y = np.linspace(ymin, ymax, n)
z = np.empty((n, n))
for i, y_i in enumerate(y):
for j, x_j in enumerate(x):
z[i, j] = iter_count(complex(x_j, y_i), max_iter)
plt.imshow(z, cmap = cm.Spectral)
复制代码
Tips:imshow()接受一个2D数组作为参数置,用于渲染图片,其中每个像素代表一个从2D数组中提取的值。像素的颜色从colormap中选取。2D数组中的数据也可以是自文件或其他源,例如我们完全可以将读取的图片绘制在图形中。
# 读取图片
img = plt