如何将两个列表传入matplotlib的ax.table()函数生成指定列标题的表格?
如何用Matplotlib将两个列表绘制成指定列标题的表格
我明白你的需求:要把data_list_1和data_list_2分别作为两列,配上指定的列标题生成表格。问题出在ax.table()的cellText参数需要的是行式的二维数据,而你现在是两个单独的列列表,直接传肯定不行。下面是解决方法:
完整的可运行代码
import matplotlib.pyplot as plt # 定义列标题和你的数据 column_headers = ('Question Text', 'Answer Status') data_list_1 = ['hi', 'name pleas', 'how are you'] data_list_2 = ['answered', 'notanswered', 'answered'] # 创建画布和轴对象(这步你之前漏了,必须先创建ax才能调用table方法) fig, ax = plt.subplots() # 把两个列列表转换成行式二维数据:每一行对应一组(问题文本, 回答状态) table_rows = list(zip(data_list_1, data_list_2)) # 生成表格,指定列标题和行数据 the_table = ax.table(cellText=table_rows, colLabels=column_headers, loc='center') # 表格美化设置 ax.axis("off") the_table.set_fontsize(14) the_table.scale(1.5, 1.5) plt.show()
核心要点说明
- 数据格式转换:用
zip()函数把两个列列表“配对”成行数据,再转成列表table_rows,这样cellText就能正确识别每一行的两个单元格内容。 - 补充轴对象创建:你之前的代码里漏了
fig, ax = plt.subplots()这一步,没有创建ax对象的话,调用ax.table()会直接报错,这是必须的前置步骤。 - 表格定位优化:加上
loc='center'参数能让表格在画布居中显示,视觉效果更规整。
运行这段代码后,你就能得到第一列显示问题文本、第二列显示回答状态的清晰表格了。
内容的提问来源于stack exchange,提问作者Amal Sailendran
相关产品推荐
相关产品推荐

