• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

顶部和底部的白色空间Python matplotlib图

python 来源:Ayush Kesarwani 3次浏览

我必须在Python中绘制表格图并将此表保存为jpeg/png。然后在邮件中使用这个图像。问题是我在图表的顶部和底部获得了空白区域。代码我用来实现这一目标:顶部和底部的白色空间Python matplotlib图

nrows, ncols = len(df)+1, len(df.columns) 
hcell, wcell = 0.5, 1.5 
hpad, wpad = 0, 0 
fig, ax = plt.subplots(figsize=(ncols*wcell+wpad, nrows*hcell+hpad)) 

ax.axis('off') 
ax.axis('tight') 
ax.xaxis.set_visible(False) 
ax.yaxis.set_visible(False) 

ax.table(cellText=df.values, colLabels=df.columns, loc='center') 
fig.savefig('table1.png', bbox_inches='tight') 

输出: tabular table 另外,我想给图表的标题到顶部和左侧。 ‘Some text Here’是标题,黄线显示我想要另一个标题的位置。 所需的输出没有额外的空白在顶部。 Desired


===========解决方案如下:

一个选项是指定表​​格的边框作为保存图形时要使用的边框。

from matplotlib import pyplot as plt 

fig, ax = plt.subplots() 

colums = ['col1', 'col2'] 
rows = ['row1', 'row2'] 
values = [[0, 1], [1, 0]] 
table = ax.table(cellText=values, colLabels=colums, rowLabels=rows, loc='center') 

ax.axis('off') 

fig.canvas.draw() 
bbox = table.get_window_extent(fig.canvas.get_renderer()) 
bbox_inches = bbox.transformed(fig.dpi_scale_trans.inverted()) 

fig.savefig('plop.png', bbox_inches=bbox_inches) 

plt.show() 

enter image description here

在这种情况下,外线croped因为线延伸到其位置的两侧。人们仍然可以在表格周围添加一些填充。例如。有5个像素填充,

bbox = table.get_window_extent(fig.canvas.get_renderer()) 
bbox = bbox.from_extents(bbox.xmin-5, bbox.ymin-5, bbox.xmax+5, bbox.ymax+5) 
bbox_inches = bbox.transformed(fig.dpi_scale_trans.inverted()) 

enter image description here


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)