我正在尝试基于4个离散值1、2、3、4创建pcolor。我想将1定义为黑色,2定义为红色,3定义为黄色,4定义为绿色。有谁知道该如何做?
test = ([1,2,2,1,3],[1,1,1,1,4],[2,1,1,2,1])
import numpy as np
dataset = np.array(test)
plt.pcolor(dataset)
感谢您的信件。
我正在尝试基于4个离散值1、2、3、4创建pcolor。我想将1定义为黑色,2定义为红色,3定义为黄色,4定义为绿色。有谁知道该如何做?
test = ([1,2,2,1,3],[1,1,1,1,4],[2,1,1,2,1])
import numpy as np
dataset = np.array(test)
plt.pcolor(dataset)
imshow
,并使用dict
来映射所需的颜色:colordict = {1:(0,0,0),2:(1,0,0),3:(1,1,0),4:(0,1,0)}
test = ([1,2,2,1,3],[1,1,1,1,4],[2,1,1,2,1])
test_rgb = [[colordict[i] for i in row] for row in test]
plt.imshow(test_rgb, interpolation = 'none')
red = (1, 0, 0) # This would be red
green = (0, 1, 0) # this is green
所以,颜色 = ((0, 0, 0), (1, 0, 0), (0, 1, 0))
会给您 colors[1]
红色,和 colors[2]
绿色。
这个程序展示了 pcolor 的工作原理:
import pylab as plt
import numpy as np
def test_pcolor():
cmap = plt.get_cmap('gnuplot')
Z = np.empty((100, 100))
for x in range(100):
for y in range(100):
Z[y, x] = 0.0001 * x * y
plt.subplot(1,1,1)
c = plt.pcolor(Z, cmap = cmap)
plt.show()
def main():
test_pcolor()
return 0
if __name__ == '__main__':
main()
左下角为0.0,右上角为1.0。pcolor从渐变中获取实际颜色。我在这里使用了gnuplot的渐变。所以0.0是渐变左侧的颜色,1.0是右侧的颜色。
如果您想要特定的颜色,可以定义自己的渐变。 这篇文章 是有关colormaps的一个不错的教程。