Matplotlib学习笔记——密度线与等高线

密度线与等高线

在二维图上用等高线或者彩色图来表示三维数据是个不错的方法。Matplotlib提供了三个函数来解决这个问题:用plt.contour()绘制等高线、用plt.contourf绘制带有填充颜色的等高线图、用plt.imshow显示图形。

plt.contour()函数

#生成第三维数据的自定义函数
def f(x,y):
    return np.sin(x) ** 10 + np.cos(10 + y*x) * np.cos(x)

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-white')
import numpy as np

x = np.linspace(0, 5, 50)
y = np.linspace(0, 5, 50)
X,Y = np.meshgrid(x, y)
Z = f(X,Y)

#绘制标准的等高线
plt.contour(X, Y, Z, colors='r')

当图形只使用一种颜色时,默认使用虚线表示负数,使用实线表示正数。另外,可以使用cmap参数设置一个线条配色方案来自定义颜色。还可以让更多的线条显示不同的颜色——可以将数据范围等分为20份,然后永不同的颜色来表示。

#使用红-灰配色方案
plt.contour(X, Y, Z, 20, cmap= 'RdGy')

Matplotlib学习笔记——密度线与等高线_第1张图片

plt.contourf()函数

plt.contourf()函数可以为等高线之间的间隙填充颜色。另外还可以通过plt.colorbar()命令自动创建一个表示各种颜色对应标签信息的颜色条

plt.contourf(X, Y, Z, cmap='RdGy')
plt.colorbar();

Matplotlib学习笔记——密度线与等高线_第2张图片

plt.imshow()函数

plt.show()能够将二维数组渲染成渐变图。

#plt.show()不支持用x轴和y轴数据来设置网格,,而是必须通过extent参数设置图形的坐标范围[xmin, xmax, ymin, ymax]
plt.imshow(Z, extent=[0,5,0,5], origin='lower', cmap='RdGy')
plt.colorbar()
plt.axis(aspect='image')

Matplotlib学习笔记——密度线与等高线_第3张图片

将等高线与彩色图组合起来

我们可以用一副背景色半透明的彩色图(可以通过alpha参数设置透明度),与另外一幅坐标轴相同、带数据标签的等高线图叠放在一起(plt.clabel()函数实现

contours = plt.contour(X, Y, Z, 3, colors='black')
plt.clabel(contours, inline=True, fontsize=8)
plt.imshow(Z, extent=[0,5,0,5], origin='lower', cmap='RdGy', alpha=0.5)
plt.colorbar();

Matplotlib学习笔记——密度线与等高线_第4张图片

你可能感兴趣的:(python,学习笔记,数据科学)