如何在matplotlib.table中引用单元格的精确值?

时间:2018-04-04 08:06:38

标签: python matplotlib cell

我正在使用matplotlib表来打印'n'方形板并随机选择'X'和'Y'。但是,我不知道,我在文档中找不到这个,如何找到表中特定元素的值(文本)。

def table(data):
fig, ax = plt.subplots()
ax.set_axis_off()
tb = Table(ax)

nrows, ncols = data.shape
width, height = 1.0 / ncols, 1.0 / nrows

# Add cells
for (i,j), val in np.ndenumerate(data):
    tb.add_cell(i, j, width, height, text=random.choice('XY'), loc='center', facecolor='none')
    print(i, j)
ax.add_table(tb)
return fig

如果上面的两个和上面的两个单元格都是'X',我想写,强制写'Y'而不是随机选择。

我尝试使用调试:

print(tb[i][j])

但它失败了。我的目标是拥有这样的东西:

if(tb[i-2]=='X' and tb[i-1]=='X' and tb[j-2]=='X' and tb[j-1]=='X'):
tb.add_cell(i, j, width, height, text='y'
else
tb.cell(I,j, text=random_choice(X,Y)

提前致谢!

1 个答案:

答案 0 :(得分:0)

您应该查看表格的API:https://matplotlib.org/api/table_api.html

创建单元格时,您将文本作为参数传递,但是当您尝试检查某个元素,即tb[i-2]=='X'是否未引用该文本的实例时。

因此它应该是tb[i-2].get_text() == 'X',它将返回单元格Text值。

关于以下评论:

您可能想要创建一种魔术方法来访问表格的数据。

def __getitem__(self, key):
        return self.values[key]

tb.__getitem__(i-2)