我想為我的語意分割輸出創建一個 Cityscapes_Palette_Map 作為“顏色圖”。
每個像素值范圍從 0 到 22 的顏色定義如鏈接所示。
我看到很多創建“連續”cmap 的示例,但我需要的是“離散”cmap 將 int 像素值(類)映射到特定顏色。我想知道是否有人可以為我指出正確的參考來解決我的問題。非常感謝。
uj5u.com熱心網友回復:
歡迎來到 SO。
Matplotlib 仍然沒有一種簡單的方法將整數映射到顏色。通常,最直接的方法是簡單地在 matplotlib 之外應用映射,然后將顏色值傳遞給 matplotlib。
import numpy as np
import matplotlib.pyplot as plt
n = 10
x = np.random.rand(n)
y = np.random.rand(n)
color_as_integer = np.random.randint(3, size=n)
colormap = {
0 : np.array([ 0, 0, 0, 255]), # unlabelled
1 : np.array([ 70, 70, 70, 255]), # building
2 : np.array([100, 40, 40, 255]), # fence
}
# matplotlib works with rbga values in the range 0-1
colormap = {k : v / 255. for k, v in colormap.items()}
color_as_rgb = np.array([colormap[ii] for ii in color_as_integer])
plt.scatter(x, y, s=100, c=color_as_rgb)
plt.show()
然后,您可以使用代理藝術家創建此處概述的圖例。
另一種方法是使用 ListedColormap 和 BoundaryNorm 的組合將整數映射到顏色,如本答案所述。
在這種情況下,您還可以獲得此處概述的顏色條(盡管在您的情況下制作適當的圖例可能更好)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/376212.html
標籤:matplotlib 颜色图
上一篇:跨列共享直方圖箱
下一篇:說明:獲取之前的狀態
