這次要介紹如何在散佈圖中製作color bar。
製作有color bar的散佈圖
之前說明過,如何在散佈圖中製作不同顏色,不同形狀的點。這次要介紹的是如何給有連續數量的點上色,並且製作color bar。首先我們來看看執行結果。

接著我們來看看代碼。cm是指定colormap顏色的部分。另外,在scatter的部分指定cmap的話就會製作出colormap。
import matplotlib.pyplot as plt
# data x, y
x = range(15)
y = range(15)
# 點(x, y)的大小
z = range(15)
# colormap
cm = plt.cm.get_cmap('RdYlBu')
# generate figure
fig = plt.figure()
# 設定ax
ax = fig.add_subplot(1, 1, 1)
# 利用ax畫散佈圖
mappable = ax.scatter(x, y, c=z, vmin=0, vmax=15, s=25, cmap=cm)
# colorbar
fig.colorbar(mappable, ax=ax)
# show
plt.show()
matplotlib的colormap
colormap是顯示點的大小與顏色的對應關係的工具。在matplotlib中有許多可以指定的cmap,只要在這邊指定Object就可以根據數值的大小來決定顏色。
製作colormap
首現,在製作colormap的時候我們會用到下面的get_cmap。
cm = plt.cm.get_cmap('RdYlBu')
這邊我們使用了’RdYlBu’的顏色,這是從紅色~藍色變化的colormap。當然除了這個顏色分佈以外還有許多種顏色。例如當我們把’RdYlBu’換成了PiYG的話就會變成下面的顏色。
詳細的顏色的話可以參考下面的連結。
https://matplotlib.org/3.1.3/tutorials/colors/colormaps.html

Colormap的範圍
當我們指定vmax和vmin的時候,colormap的顏色會適當的分割成vmax~vmin的範圍大小。下面是引用剛剛的連結的colormap的對應圖。

最後要說明一個稍微比較複雜的東西。我們在製作有colormap的散佈圖時,點的顏色會根據vmax以及vmin的範圍來決定,我們上面的範例代碼中的散佈圖的點的大小是分布於0~15,如果將這些點點在範圍是0~100的colormap上的話就會出現下面的問題。
mappable = ax.scatter(x, y, c=z, vmin=0, vmax=100, s=25, cmap=cm)

我們可以看到所有的點的顏色都偏向於紅色。因此,通常我們在製作有colormap的散佈圖時不需要指定vmin跟vmax,第一張圖是為了更好的呈現colormap的功能才特別指定的。
留言