1

在此处输入图像描述在此处输入图像描述

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

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

4

1 回答 1

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()

在此处输入图像描述

于 2013-02-13T14:30:18.930 回答