簡體   English   中英

用自定義顏色在Python中繪制矩陣

[英]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將其存檔?

您可以使用vminvmax參數將特定范圍映射到特定顏色圖,然后將這些顏色分配給圖形中的特定值。 這是一個使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM