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