2012-11-08 149 views
2

使用matplotlib,我希望能够用pcolormesh指定确切的颜色。以下是我已经在上面使用matplotlib的pcolormesh指定颜色

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 

设立了一堆假数据的尝试

import numpy as np 
from matplotlib import pyplot as plt 

进口。 Z只是0 s,1 s和2 s(这就像我真正的问题)。

plt.pcolormesh(X,Y,Z,color=[(1,1,0),(0,0,1),(1,0,1)]) 

呼叫pcolormesh与妄图获得黄色,蓝色和品红色情节color说法。事实上,我得到了默认的颜色!

pcolormesh

我的问题是:我怎么叫pcolormesh拿到第一区域为黄色,第二蓝色,洋红第三?

+0

我认为你需要指定包含这些颜色的颜色表。即 ''plt.pcolormesh(X,Y,Z,cmap = plt.cm.Spectral)'' –

回答

4

一种方法是使用自定义颜色表:

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() 

plot showing custom color map with yellow, blue, magenta

+0

谢谢。我曾想过一个色彩映射,但我不知道matplotlib.colors.ListedColormap。所以,我认为这会很尴尬。 – luispedro