Matplotlib表格大小和位置

Matplotlib表格大小和位置,matplotlib,Matplotlib,我正在尝试创建一个维度为Nx7的表,其中N是一个变量。 通过matplotlib制作适当大小的表格是一项挑战。 我想把它放在情节的中心,标题就在桌子的正上方。 这是我的密码 data = [ ['A', 'B', 'C', 'D', 'E', 'F'], ['100%', '200%', 'O', 'X', '1.2%', '100', '200'], ['100%', '200%', 'O', 'X', '1.2%', '100', '200'], ['100%', '

我正在尝试创建一个维度为Nx7的表,其中N是一个变量。
通过matplotlib制作适当大小的表格是一项挑战。
我想把它放在情节的中心,标题就在桌子的正上方。
这是我的密码

data = [
   ['A', 'B', 'C', 'D', 'E', 'F'],
   ['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
   ['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
   ['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
   ['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
   ['100%', '200%', 'O', 'X', '1.2%', '100', '200']]

fig, ax1 = plt.subplots(dpi=200)

column_headers = data.pop(0)
row_headers = [x.pop(0) for x in data]
rcolors = np.full(len(row_headers), 'linen')
ccolors = np.full(len(column_headers), 'lavender')

cell_text = []
for row in data:
    cell_text.append([x for x in row])

table = ax1.table(cellText=cell_text,
                  cellLoc='center',
                  rowLabels=row_headers,
                  rowColours=rcolors,
                  rowLoc='center',
                  colColours=ccolors,
                  colLabels=column_headers,
                  loc='center')
fig.tight_layout()

table.scale(1, 0.5)
table.set_fontsize(16)
# Hide axes
ax1.get_xaxis().set_visible(False)
ax1.get_yaxis().set_visible(False)

# Add title
ax1.set_title('{}\n({})'.format(title, subtitle), weight='bold', size=14, color='k')

fig.tight_layout()
plt.savefig(filename)
在我的代码中,有几个问题。

  • 标题重叠在桌子上
  • 整个数字不知怎么从中心向右偏移了。(结果图像的左侧充满空白)
  • 表中文本的大小不是16。(比标题小得多)

  • 谢谢。

    下面是一些绘制表格的代码

    一些评论:

    • matplotlib中对
      表的支持相当基本。它主要用于在现有绘图上以表格形式添加一些文本
    • 使用
      .pop()
      会使代码难以推理。在Python中,通常从给定列表开始创建新列表
    • 由于绘图的适当大小在很大程度上取决于行数,因此有可能将其计算为若干倍数。精确的数值取决于完整的表格,进行一点实验是有意义的。对于给定的示例数据,下面的值似乎运行良好
    • dpi
      tight
      边界框可以设置为
      savefig()
      的参数
    • 不同的matplotlib版本的行为可能略有不同。下面的代码使用matplotlib 3.3.3进行测试
    将numpy导入为np
    将matplotlib.pyplot作为plt导入
    N=10
    数据=['A'、'B'、'C'、'D'、'E'、'F']]+[[100%,'200%,'O'、'X'、'1.2%,'100'、'200']*N
    列标题=数据[0]
    row_headers=[row[0]表示数据[1:]中的行
    单元格_text=[行[1:]表示数据[1:]中的行
    图,ax1=plt.子批次(图尺寸=(10,2+N/2.5))
    rcolors=np.full(长度(行标题),“亚麻布”)
    ccolors=np.full(长度(列标题),“薰衣草色”)
    table=ax1.table(单元格文本=单元格文本,
    cellLoc='center',
    行标签=行标题,
    行颜色=R颜色,
    rowLoc='center',
    颜色=颜色,
    colLabels=列标题,
    loc='center')
    表.比额表(1、2)
    表.设置字体大小(16)
    ax1.轴(“关闭”)
    title=“演示标题”
    subtitle=“演示字幕”
    ax1.set_title(f'{title}\n({subtitle}'),weight='bold',size=14,color='k')
    plt.savefig(“demo_table.png”,dpi=200,bbox_inches='tight')
    

    这是否回答了您的问题?您是否正在运行matplotlib的最新版本(当前版本为
    3.3.3
    )?@JoshuaFooJF它有助于解决某些问题。谢谢你的好的参考,清楚和完美的解释。谢谢但是表中的字体大小没有改变(运行3.3.3上的代码)哦,它来自我使用的字体。我将在稍后搜索此案例。非常感谢。