我的 Matplotlib 表格周围有多余的白色空白区域,导致我的表格被挤压,好像 不够figsize
大一样。如果我增加figsize
,表格会正常显示,但白色空白区域会变得更大。此外,当行数超过一定数量(大约 35 左右)时,标题会错位在表格上。
import matplotlib.pyplot as plt
def create_pivot_table(
title: str,
pivot_table: pd.core.frame.DataFrame,
):
"""
Creates a Matplotlib table from a Pandas pivot table.
Returns fig and ax.
"""
fig_width = 1 + len(pivot_table.columns) * 0.6
fig_height = 1 + len(pivot_table) * 0.3
figsize=(fig_width, fig_height)
fig, ax = plt.subplots(figsize=figsize)
title = title
ax.set_title(
title,
fontsize=16,
weight='bold',
loc='center'
)
ax.axis('off')
table = ax.table(
cellText=pivot_table.values,
colLabels=pivot_table.columns,
rowLabels=pivot_table.index,
cellLoc='center',
loc='center'
)
table.auto_set_font_size(False)
# Formatting the table with alternating colors to make it more readable
for (row, column), cell in table.get_celld().items():
if row == 0:
cell.set_text_props(weight='bold')
cell.set_fontsize(8)
cell.set_height(0.05)
if column % 2 == 0:
cell.set_facecolor('#dadada')
else:
cell.set_facecolor('#ffffff')
else:
cell.set_fontsize(10)
cell.set_height(0.03)
if row % 2 == 0:
cell.set_facecolor('#ffffff')
else:
cell.set_facecolor('#e6f7ff')
if column % 2 == 0:
cell.set_facecolor('#dadada' if row % 2 == 0 else '#b9d5d3')
else:
cell.set_facecolor('#ffffff' if row % 2 == 0 else '#e6f7ff')
return fig, ax
虚拟数据:
import pandas as pd
import numpy as np
data = np.random.randint(1, 100, size=(3, 4))
df = pd.DataFrame(data, index=['A', 'B', 'C'], columns=[1, 2, 3, 4])
title = 'Title'
fig, ax = create_pivot_table(
title=title,
pivot_table=df
)
结果:
期望结果:相同的表格,减去空白区域,以便表格正确显示。此外,我想将标题和表格置于图中的中心,而我编写的代码无法实现这一点(取决于表格和标题的大小)。
提前感谢你的帮助!
我认为您需要尝试
suptitle
标题并使用bbox
的参数 进行游戏table
。