对应于矩阵上的行和列的数字

时间:2013-02-13 14:01:35

标签: python matplotlib wxpython

enter image description here enter image description here

我在matplotlib中创建了这个矩阵,一些坐标是[(1,109),(2,109),(2,130),(2,131),(2,132)],依此类推。我还有一个字母列表['A','B''H','A','H'] 每个字母对应于矩阵的行和列。 怎么能找出矩阵的每个方格有多大? 后来我想生成一个颜色部分,它与矩阵有关,它取决于字母列表。 因此,第一个A与矩阵上的点相关(1,109),因此颜色部分可以说红色表示A与行和列对齐,并且与位于那里的正方形一样宽。 第二个B与(2,109)相关,颜色为蓝色,与行和列对齐,并且与那里的正方形一样宽

这就是我所得到的颜色,每个颜色部分适用于特定部分的点,所以当它的大部分蓝色时,有很大一部分B彼此相邻

1 个答案:

答案 0 :(得分:1)

我不确定这是不是你想要的,但我会抓住它:

import matplotlib.pyplot as plt
import numpy as np

data = np.array([(1,1),(2,9),(2,3),(2,1),(2,2)])
letters = ['A', 'B', 'H', 'A', 'H']
colormap = {'A':(1,0,0),'B':(0,0,1),'H':(0,1,0)}

N = data.max() + 5
# color the background white (1 is white)
arr = np.ones((N,N,3))

for (x,y), letter in zip(data,letters):
    # color the point at (x,y) black
    arr[x,y] = (0,0,0)
    # color the x=0 band
    arr[0,y] =  colormap[letter]
    # color the y=N-1 band
    arr[x,N-1] =  colormap[letter]    

arr = arr.swapaxes(0,1)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

ax.imshow(arr, interpolation='nearest')
ax.invert_yaxis()
# ax.axis('off')
plt.show()

enter image description here