我正在使用python来模拟一些自动化模型,并且在matplotlib的帮助下,我正在生成如下所示的图。
我正在使用以下命令进行绘图:
ax.imshow(self.g, cmap=map, interpolation='nearest')
其中self.g
是二进制地图(0
- >蓝色,1
- >红色在我当前的地块中。)
然而,要在我的报告中包含这个,我希望情节是白色背景上的黑点而不是蓝色的红色。我该如何做到这一点?
答案 0 :(得分:41)
您可以通过cmap
关键字更改正在使用的颜色地图。颜色贴图'Greys'
提供您想要的效果。您可以找到available maps on the scipy website的列表。
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(101)
g = np.floor(np.random.random((100, 100)) + .5)
plt.subplot(211)
plt.imshow(g)
plt.subplot(212)
plt.imshow(g, cmap='Greys', interpolation='nearest')
plt.savefig('blkwht.png')
plt.show()
导致:
答案 1 :(得分:10)
Yann的答案有一种替代方法可以让你更精细地控制。 Matplotlib的imshow可以采用MxNx3
矩阵,其中每个条目都是RGB颜色值 - 只需将它们设置为白色[1,1,1]
或黑色[0,0,0]
。如果你想要三种颜色,很容易扩展这种方法。
import matplotlib.pyplot as plt
import numpy as np
# Z is your data set
N = 100
Z = np.random.random((N,N))
# G is a NxNx3 matrix
G = np.zeros((N,N,3))
# Where we set the RGB for each pixel
G[Z>0.5] = [1,1,1]
G[Z<0.5] = [0,0,0]
plt.imshow(G,interpolation='nearest')
plt.show()