如何在python中编辑表?

如何在python中编辑表?,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我在Python3.x中有一段代码,它使用matplotlib colLabels = ["Name", "Number"] data = [["Peter", 17], ["Sara", 21], ["John", 33]] the_table = ax.table(cellText=data, colLabels=colLabels, loc='center') plt.pause(0.1) 上面的代码是一

我在Python3.x中有一段代码,它使用matplotlib

colLabels = ["Name", "Number"]
data = [["Peter", 17], ["Sara", 21], ["John", 33]]
the_table = ax.table(cellText=data,
                     colLabels=colLabels,
                     loc='center')
plt.pause(0.1)
上面的代码是一个循环,现在我想搜索第一列中有“Peter”的行(它是唯一的),并对其进行编辑,以便在每次迭代中第二列中的条目都会更改。我可以清除整个
ax
并添加新表,但效率很低(我将每隔0.1s重新绘制多行表)


是否有方法在matplotlib中编辑此内容(以及如何编辑),或者我应该使用其他库(哪些库)?

可以通过选择单元格并设置单元格的
\u text
属性来更新matplotlib表中的文本。例如

the_table.get_celld()[(2, 1)].get_text().set_text("new text")
将更新第三行和第二列中的单元格

动画示例:

import matplotlib.pyplot as plt
from  matplotlib.animation import FuncAnimation

fig, ax = plt.subplots(figsize=(4,2))
colLabels = ["Name", "Number"]
data = [["Peter", 1], ["Sara", 1], ["John", 1]]
the_table = ax.table(cellText=data,
                     colLabels=colLabels,
                     loc='center')

def update(i):
    the_table.get_celld()[(1, 1)].get_text().set_text(str(i))
    the_table.get_celld()[(2, 1)].get_text().set_text(str(i*2))
    the_table.get_celld()[(3, 1)].get_text().set_text(str(i*3))

ani = FuncAnimation(fig, update, frames=20, interval=400)
plt.show()

找出需要更新的单元格可能最好使用数据,而不是从表中读取数据

inx = list(zip(*data))[0].index("Peter")
为您提供索引0,以便可以通过
the_table.get_celld()[(inx+1,1)]
(注意
+1
,这是因为表格标题的缘故)。

可以通过选择单元格并设置单元格的
\u text
属性来更新matplotlib表中的文本。例如

the_table.get_celld()[(2, 1)].get_text().set_text("new text")
将更新第三行和第二列中的单元格

动画示例:

import matplotlib.pyplot as plt
from  matplotlib.animation import FuncAnimation

fig, ax = plt.subplots(figsize=(4,2))
colLabels = ["Name", "Number"]
data = [["Peter", 1], ["Sara", 1], ["John", 1]]
the_table = ax.table(cellText=data,
                     colLabels=colLabels,
                     loc='center')

def update(i):
    the_table.get_celld()[(1, 1)].get_text().set_text(str(i))
    the_table.get_celld()[(2, 1)].get_text().set_text(str(i*2))
    the_table.get_celld()[(3, 1)].get_text().set_text(str(i*3))

ani = FuncAnimation(fig, update, frames=20, interval=400)
plt.show()

找出需要更新的单元格可能最好使用数据,而不是从表中读取数据

inx = list(zip(*data))[0].index("Peter")
为您提供索引0,以便可以通过
the_table.get_celld()[(inx+1,1)]
(注意
+1
,这是因为表标题的缘故)。

我建议您看看Pandas,它与表的数据帧类型一起提供。它具有丰富的编辑功能(也是矢量化的),并且与matplotlib接口良好。然而,我不知道我是否真的明白你的问题。您是否正在尝试部分更新显示的绘图?是否考虑改用@ypnos?我想编辑
数据中的内容
,并查看\u表(正在显示)上的更改编辑:也要高效地进行编辑,因为我现在要做的是删除\u表,并用更新的数据创建一个新表,我建议您看看Pandas,它与表的数据帧类型一起提供。它具有丰富的编辑功能(也是矢量化的),并且与matplotlib接口良好。然而,我不知道我是否真的明白你的问题。您是否正在尝试部分更新显示的绘图?是否考虑改用@ypnos?我想编辑
数据中的内容
,并查看\u表(正在显示)上的更改编辑:也要高效地进行编辑,因为我现在要做的是删除
这个表
并用更新的
数据创建一个新的表
你知道如何向这个表中添加一行吗?你可以使用
这个表。添加单元格()
,但是可能需要一点时间才能很好地显示它。你知道如何向这个表中添加一行吗?你可以使用
这个表。添加单元格()
但要让它显示得很好,可能需要一点时间或工作。