在Matplotlib中设置等高线图的颜色条限制
Matplotlib是一个常用的数据可视化库,可以用于制作各种图表,包括等高线图。等高线图(Contour Plot)是在二维坐标系中,以等高线的形式表现三维数据变化的一种图形表示方法,常用于表示地形图、气压等变量的分布。在制作等高线图时,颜色条是一个很重要的组成部分,用于表示等高线图中不同颜色对应的数值范围。而为了达到更好的可视化效果,对颜色条的限制设置也非常重要。本文将介绍如何在Matplotlib中设置等高线图的颜色条限制。
生成数据
首先,我们需要生成一些数据进行实验。这里我们使用Python的NumPy库生成的二元函数值,作为等高线数据的基础。具体代码如下:
import numpy as np
# 生成二元函数值
x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)
xx, yy = np.meshgrid(x, y)
z = np.sin(xx)*np.cos(yy)
生成的等高线数据存储在变量z
中,我们可视化输出一下看看:
import matplotlib.pyplot as plt
# 绘制等高线图
plt.contourf(x, y, z)
plt.colorbar()
plt.show()
Matplotlib设置颜色条限制
等高线图的颜色条直接反应了数据的范围和变化趋势,如果颜色条设置合理,能够更好地表达数据。Matplotlib提供了clim
函数用于设置颜色条范围,可以通过人为设定颜色条上下限的方式,在图像上突出反映数据的特征。我们来看一个例子:
import matplotlib.pyplot as plt
# 绘制等高线图
plt.contourf(x, y, z, levels=np.linspace(-1, 1, 11))
plt.colorbar()
plt.show()
这里的clim
函数的参数就可以设置颜色条的范围。
上面的代码中,我们通过设置等高线数据的显示范围为levels= np.linspace(-1, 1, 11)
,表示将等高线数据等分10份,每份的最小值和最大值分别为[-1, -0.8, -0.6, ..., 0.8, 1]
。最后的colorbar()
函数用于显示颜色条。
我们可以看到,当设置颜色条限制时,等高线图的上下限都被限制在了[-1, 1]
之间。
原生颜色映射表
在Matplotlib中,有很多原生的色带,可以直接调用。例如,plt.cm.jet
色带、plt.cm.bone
色带、plt.cm.hot
色带等,具体可以查看[官方文档][1]。这些预设的色带常用在图像和图形上。
下面的代码中,我们使用plt.cm.jet
原生的颜色映射表,将等高线数据设定为levels = np.linspace(-1, 1, 11)
。最终的等高线图如下:
import matplotlib.pyplot as plt
import matplotlib as mpl
# 绘制等高线图
plt.contourf(x, y, z, levels=np.linspace(-1, 1, 11), cmap=plt.cm.jet)
plt.colorbar()
plt.show()
我们可以看到,根据设置的levels
和色带表现的效果,颜色条的上限和下限已经被映射到了对应的颜色中。
自定义颜色映射表
除了原生颜色映射表,Matplotlib还允许用户自定义颜色映射表。用户可以自己定义一组特定的颜色,将其插入色带中,并在图中回调这个颜色表。在Matplotlib中,自定义色带需要使用ListedColormap
类,在ListedColormap
类的构造函数中传入一个颜色列表。每个颜色都可以用元组(r, g, b, a)中的值表示,rgba分别表示红、绿、蓝和透明度的取值,取值范围在0-1之间。
下面的代码中,我们使用自定义配色方案,自定义颜色映射表,并利用自定义的颜色映射表生成等高线图:
import matplotlib.pyplot as plt
import matplotlib as mpl
# 设置自定义配色方案
colors = [(0, 0, 0.5), (0, 0.2, 1), (0, 0.5, 1), (0, 0.7, 1), (0, 1, 1), (0.2, 1, 0.7), (0.5, 1, 0), (0.7, 1, 0), (1, 1, 0), (1, 0.7, 0), (1, 0.5, 0), (1, 0.2, 0), (1, 0, 0)]
# 定义一个自定义颜色映射表
custom_cmap = mpl.colors.ListedColormap(colors, name='custom')
# 绘制等高线图
plt.contourf(x, y, z, levels=np.linspace(-1, 1, 11), cmap=custom_cmap)
plt.colorbar()
plt.show()
利用上述代码,我们定义了一个13种颜色的自定义配色方案,并采用自定义颜色映射表生成等高线图:
我们可以看到一个明显的Gradual的过渡。自定义的颜色映射表的形式也具有灵活性,用户可以根据实际需求进行自由定义。
结论
本文从生成等高线图的基础讲起,介绍了在Matplotlib中设置等高线图的颜色条限制的方法,包括原生颜色映射表和自定义颜色映射表的应用。这些方法的应用可以更好地展现等高线数据在区域范围内的数值变化和发展趋势,同时为数据科学家和绘图工程师在数据可视化领域中提供更多的工具和技能。