在使用matplotlib的pcolormesh时指定颜色

7
使用matplotlib,我想能够在pcolormesh中指定精确的颜色。以下是我尝试过的内容。
import numpy as np
from matplotlib import pyplot as plt

在顶部导入

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

设置一堆假数据。 Z 只有 012(这就像我的真实问题)。

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

尝试使用color参数调用pcolormesh来绘制一个黄色、蓝色和洋红色的图形,但实际上得到了默认颜色!

pcolormesh

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


1
我认为您需要指定一个包含这些颜色的调色板。例如:plt.pcolormesh(X,Y,Z, cmap=plt.cm.Spectral) - Andreas Mueller
1个回答

10

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

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


谢谢。我曾考虑过使用颜色映射,但我不知道 matplotlib.colors.ListedColormap。所以,我认为这会非常尴尬。 - luispedro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接