2012-11-08 173 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