一、基本介紹
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/zh-hant/n/287177.html