Matlibplot table 拉伸和移动

Matlibplot table stretching and moving

我正在尝试调整这个 table 以使其占据整个 window,但是顶部、底部左侧和右侧滑块的组合不允许我这样做,所有它们要做的是在翻译的同时缩小网格。

有没有办法垂直拉伸它?

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors
from random import randint

def colour(value):
    r,g,b = 0,0,0
    if value < 1:
        r = 1
        g = 1*value
    if value > 1:
        r = 1 - 1*(value-1)
        g = 1
    if value == 1:
        r = 1
        g = 1
    if value > 2:
        b = 1
    colour  =  (r,g,b)

    return colour

ncols, nrows = 7,8
row= [[]]*nrows
for i in range(nrows):
    row[i] = i*3

print(row)
col = ['M', 'T', 'W', 'Th', 'F', 'Sat', 'Sun']
list = []
text = ['','','','','','','']

for a in range(nrows):
     list.append(text)


fig, ax = plt.subplots()
ax.axis('tight')
ax.axis('off')
image = ax.table(cellText=list, colLabels = col, rowLabels=row)
for j in range(ncols):
    for i in range(nrows):
        print(i,j)
        value = randint(0,200)
        value = value / 100       
        image._cells[(i+1,j)].set_facecolor(colour(value))

figManager = plt.get_current_fig_manager()
figManager.window.showMaximized()
fig.tight_layout()
plt.show()

使用缩放工具,select 宽度大于高度的区域(例如,从左上角到右下角)更改纵横比。您也可以调整 figsize 以获得更好的纵横比。

您正在创建 table 轴下方。您似乎更愿意在 内创建它,

table = ax.table(..., loc="center")

然后要调整垂直跨度,您可以设置比例,例如在 y 方向将尺寸加倍:

table.scale(1,2)

结果看起来像

或者,指定 table 相对于轴的边界框。要填充完整的轴,

table = ax.table(..., bbox=[0,0,1,1])

然后调用 fig.tight_layout() 照常调整边距。