Matplotlib colormap
在数据可视化领域,colormap(颜色映射)是一个非常重要的概念。它可以将数字数据映射到颜色,帮助我们更加直观地理解和分析数据。matplotlib是一个功能强大的Python绘图库,提供了丰富的colormap选择,本文将详细介绍matplotlib中的colormap的使用方法和示例代码。
基本概念
在matplotlib中,colormap可以通过plt.get_cmap()
来获取。每个colormap都是由各种颜色组成的颜色映射表,可以根据具体的需求进行调整、自定义。常见的colormap包括:’viridis’, ‘plasma’, ‘inferno’, ‘magma’, ‘cividis’等。我们可以通过调用colormap对象中的方法来对颜色映射进行操作。
以下是一个简单的示例代码:
import matplotlib.pyplot as plt
cmap = plt.get_cmap('viridis')
print(cmap)
运行以上代码,可以得到输出结果为:
<matplotlib.colors.LinearSegmentedColormap object at 0x7faf29acf910>
使用colormap绘制图表
接下来,我们将演示如何使用colormap来绘制不同类型的图表。以下是一些示例代码,分别展示了如何在散点图、柱状图、等高线图等图表中使用colormap。
示例1:散点图
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)
plt.scatter(x, y, c=colors, s=sizes, cmap='viridis', alpha=0.5)
plt.colorbar()
plt.show()
Output:
在这个示例中,我们使用了scatter()
函数绘制了一个散点图,利用颜色和大小的变化来表示数据的不同特征。通过设置参数cmap='viridis'
来使用viridis colormap。
示例2:柱状图
import matplotlib.pyplot as plt
import numpy as np
height = [3, 12, 5, 18, 7]
bars = ('A', 'B', 'C', 'D', 'E')
colors = plt.get_cmap('plasma')(np.linspace(0, 1, len(height)))
plt.bar(bars, height, color=colors)
plt.show()
在这个示例中,我们使用bar()
函数绘制了一个柱状图,通过设置不同的颜色来表示不同的柱子。
示例3:等高线图
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) ** 2 + np.cos(Y) ** 2
plt.contourf(X, Y, Z, cmap='inferno')
plt.colorbar()
plt.show()
Output:
在这个示例中,我们使用contourf()
函数绘制了一个等高线图,通过设置不同的颜色来表示不同的高度。
通过以上示例代码,我们可以看到如何利用colormap来美化数据可视化图表,使其更加直观和具有吸引力。
自定义colormap
除了使用matplotlib提供的内置colormap,我们还可以根据具体需求自定义colormap。我们可以通过ListedColormap()
来创建自定义的离散colormap,或者通过LinearSegmentedColormap()
来创建自定义的连续colormap。
以下是一个自定义colormap的示例代码:
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
colors = [(0, 'red'), (0.5, 'green'), (1, 'blue')]
cmap = LinearSegmentedColormap.from_list('custom_cmap', colors)
plt.imshow([[0, 1]], cmap=cmap)
plt.colorbar()
plt.show()
Output:
在这个示例中,我们创建了一个渐变从红色到绿色再到蓝色的自定义colormap,并将其应用在了图像显示中。
调整colormap
除了创建自定义colormap之外,我们还可以调整已有colormap的亮度、饱和度等属性,进一步定制化我们的可视化效果。
以下是一个调整colormap亮度的示例代码:
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np
cmap = plt.get_cmap('viridis')
brightness = 1.5
new_cmap = mcolors.ListedColormap(cmap(np.linspace(0, 1, 256)) ** brightness)
plt.imshow([[0, 1]], cmap=new_cmap)
plt.colorbar()
plt.show()
在这个示例中,我们对viridis colormap进行了亮度调整,使得图像看起来更加明亮。