使用colormap自定义matplotlib图表颜色
在数据可视化中,选择合适的颜色显得尤为重要。Matplotlib是Python中常用的绘图库之一,而colormap(颜色映射)则是Matplotlib中用来对数据进行可视化编码颜色的方式。本文将介绍如何使用colormap来自定义Matplotlib图表的颜色。
什么是colormap
Colormap是一组颜色的序列,通常在数据可视化中根据数据的大小或者顺序来对色彩进行编码。在Matplotlib中,可以使用colormap使得图表的颜色更加具有意义或者美感。
创建基本的colormap
首先我们来创建基本的colormap。Matplotlib中提供了很多内置的colormap供我们选择,比如viridis、plasma、inferno等等。下面我们来展示如何使用viridis这个colormap。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.scatter(x, y, c=y, cmap='viridis')
plt.colorbar()
plt.show()
Output:
在上面的例子中,我们生成了一组随机的数据,并使用scatter图来展示数据的分布。通过设置cmap='viridis'
来应用viridis这个colormap,从而使得图表的颜色更加清晰和有序。
自定义colormap
如果Matplotlib提供的内置colormap不能满足我们的需求,我们也可以自定义colormap。下面我们来展示如何创建一个自定义的colormap。
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
cmap_data = [(0.0, 'red'),
(0.5, 'green'),
(1.0, 'blue')]
custom_cmap = LinearSegmentedColormap.from_list('custom_cmap', cmap_data)
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.scatter(x, y, c=y, cmap=custom_cmap)
plt.colorbar()
plt.show()
在上面的例子中,我们使用了LinearSegmentedColormap类来创建一个自定义的colormap。在cmap_data
中定义了颜色渐变的起始点、中间点和结束点对应的颜色,然后通过LinearSegmentedColormap.from_list
函数创建了自定义的colormap。
colormap的应用场景
Colormap在数据可视化中有着广泛的应用场景,比如展示温度、高度、密度等连续型数据时都可以使用colormap来使得图表更加直观。下面我们来展示一些不同的应用场景。
温度图
import matplotlib.pyplot as plt
data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot')
plt.colorbar()
plt.show()
在上面的例子中,我们使用了hot这个colormap来展示一个随机生成的矩阵数据,通过颜色的深浅来表示数据的大小。
高度图
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
fig.colorbar(surf)
plt.show()
在上面的例子中,我们使用了3D图表来展示一个高度图,通过viridis这个colormap来表示高度的大小。