一、基本介紹
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()