我有一段使用 matplotlib 的 python 3.x 代码。
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.1 秒重绘多行表)
有没有办法在 matplotlib 中编辑它(以及如何),或者我应该使用其他一些库(哪个)?
可以通过选择单元格并设置单元格的 _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
,这是因为表格标题)。
我是一名优秀的程序员,十分优秀!