[英]Plot a matrix in Python with custom colors
我正在嘗試在python中使用pytlot繪制矩陣。
import matplotlib.pyplot as plt
m = [
[1, 0, 2, 0, 0],
[1, 1, 1, 2, 0],
[0, 4, 1, 0, 0],
[0, 4, 4, 1, 2],
[1, 3, 0, 0, 1],
]
plt.imshow(m)
plt.show()
這看起來像我需要的,但是問題是我需要能夠選擇位置的顏色。
例如:
位置1x2必須為紅色。
無論如何用Python和Pyplot將其存檔?
您可以使用vmin
和vmax
參數將特定范圍映射到特定顏色圖,然后將這些顏色分配給圖形中的特定值。 這是一個使用brg
cmap的簡單示例。
我使用1-10作為比例,所以1將是藍色,5將是紅色,10將是綠色,依此類推。
import matplotlib.pyplot as plt
m = [
[1, 0, 2, 0, 0],
[1, 1, 1, 2, 0],
[0, 4, 1, 0, 0],
[0, 4, 4, 1, 2],
[1, 3, 0, 0, 1]
]
dct = {1: 5., 0: 1., 2: 1., 3: 1., 4: 1.}
n = [[dct[i] for i in j] for j in m]
print(n)
plt.imshow(n, cmap='brg', vmin=1, vmax=10)
plt.show()
輸出(矩陣中的所有1現在都是紅色,所有其他值都設置為藍色):
我猜想matplotlib.colors.ListedColormap
是您在這里需要的:
import matplotlib
import matplotlib.pyplot as plt
colors = 'lime red blue magenta yellow'.split()
cmap = matplotlib.colors.ListedColormap(colors, name='colors', N=None)
m = [
[1, 0, 2, 0, 0],
[1, 1, 1, 2, 0],
[0, 4, 1, 0, 0],
[0, 4, 4, 1, 2],
[1, 3, 0, 0, 1],
]
plt.imshow(m, cmap=cmap)
plt.show()
如果需要更多控制,也可以在列表中使用(R,G,B)元組(而不是預定義的顏色字符串)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.