一、基本介绍
plt.colorbar是matplotlib库中用来添加颜色条的函数。颜色条可以为图形提供重要的信息,例如数据值对应的颜色等级。在其最简单的用法中,plt.colorbar函数将当前活动图形(gca)中的图像作为输入,并添加一个垂直颜色条(色卡)到其右侧。
import numpy as np import matplotlib.pyplot as plt # 生成数据并画出散点图 N = 50 x = np.random.rand(N) y = np.random.rand(N) colors = np.random.rand(N) sizes = np.pi * (15*np.random.rand(N))**2 plt.scatter(x, y, s=sizes, c=colors) plt.colorbar() plt.show()
二、颜色映射
plt.colorbar的主要功能是将特定范围的数据值与颜色进行匹配,并创建相应的颜色条。这是通过指定cmap参数来实现的,该参数指定了要使用哪个颜色映射。matplotlib提供了几种内置的颜色映射,其中包括:
- viridis
- plasma
- inferno
- magma
- hot
- cool
- spring
- summer
- autumn
- winter
也可以创建自定义颜色映射,具体见下方代码。
import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap # 自定义颜色映射 colors = [(0, 0, 1), (0, 1, 0), (1, 0, 0)] cmap = LinearSegmentedColormap.from_list('my_cmap', colors, N=3) # 生成数据并画出散点图 N = 50 x = np.random.rand(N) y = np.random.rand(N) z = np.random.randint(0, 3, N) plt.scatter(x, y, c=z, cmap=cmap) plt.colorbar(ticks=[0, 1, 2], label='Class') plt.show()
三、颜色条格式化
为了让颜色条上的标签更为清晰易读,可以通过设置plt.colorbar的标签参数label和刻度参数ticks等进行调整。此外,您还可以使用format参数来格式化标签。
import numpy as np import matplotlib.pyplot as plt # 生成数据并画出散点图 N = 50 x = np.random.rand(N) y = np.random.rand(N) z = np.random.randint(0, 100, N) plt.scatter(x, y, c=z, cmap='jet') plt.colorbar(format='%d%%', label='Percentage') plt.show()
四、水平颜色条
plt.colorbar默认会创建一个垂直颜色条,但是有时候需要一个水平颜色条。您只需要将方向参数orientation设置为’horizontal’即可。
import numpy as np import matplotlib.pyplot as plt # 生成数据并画出散点图 N = 50 x = np.random.rand(N) y = np.random.rand(N) colors = np.random.rand(N) sizes = np.pi * (15*np.random.rand(N))**2 plt.scatter(x, y, s=sizes, c=colors) plt.colorbar(orientation='horizontal') plt.show()
五、多图形颜色条
如果您在单个图形中绘制了多个数据集,每个数据集都需要用不同的颜色映射。此时,您可以为每个子图创建各自的颜色条。示例代码如下:
import numpy as np import matplotlib.pyplot as plt # 生成数据并画出两个子图形 N = 50 x = np.random.rand(N) y = np.random.rand(N) colors1 = np.random.rand(N) sizes = np.pi * (15*np.random.rand(N))**2 fig, axs = plt.subplots(1, 2) # 绘制第一个子图形并添加颜色条 axs[0].scatter(x, y, s=sizes, c=colors1, cmap='viridis') cb1 = plt.colorbar(ax=axs[0], label='First') # 绘制第二个子图形并添加颜色条 colors2 = np.random.rand(N) axs[1].scatter(x, y, s=sizes, c=colors2, cmap='plasma') cb2 = plt.colorbar(ax=axs[1], label='Second') plt.show()
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/287177.html