使用matplotlib的pcolormesh时指定颜色

lui*_*dro 3 python matplotlib

使用matplotlib,我希望能够使用pcolormesh指定确切的颜色.这是我尝试过的

import numpy as np
from matplotlib import pyplot as plt
Run Code Online (Sandbox Code Playgroud)

进口顶部

X = np.linspace(0,1,100)
Y = np.linspace(0,1,100)
X,Y = np.meshgrid(X,Y)
Z = (X**2 + Y**2) < 1.
Z = Z.astype(int)
Z += (X**2 + Y**2) < .5
Run Code Online (Sandbox Code Playgroud)

设置了一堆假数据.Z只有0s,1s和2s(这就像我真正的问题).

plt.pcolormesh(X,Y,Z,color=[(1,1,0),(0,0,1),(1,0,1)])
Run Code Online (Sandbox Code Playgroud)

pcolormesh用一个color参数调用徒劳地试图得到一个黄色,蓝色和洋红色的情节.事实上,我得到了默认颜色!

pcolormesh

我的问题是:如何调用pcolormesh第一个区域为黄色,第二个区域为蓝色,第三个区域为洋红色?

Kei*_*ith 5

一种方法是使用自定义色彩映射:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import colors as c

X = np.linspace(0,1,100)
Y = np.linspace(0,1,100)
X,Y = np.meshgrid(X,Y)
Z = (X**2 + Y**2) < 1.
Z = Z.astype(int)
Z += (X**2 + Y**2) < .5

cMap = c.ListedColormap(['y','b','m'])

plt.pcolormesh(X,Y,Z,cmap=cMap)
plt.show()
Run Code Online (Sandbox Code Playgroud)

绘图显示黄色,蓝色,洋红色的自定义颜色映射