首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >顶部和底部Python matplotlib图上的空白

顶部和底部Python matplotlib图上的空白
EN

Stack Overflow用户
提问于 2017-12-18 10:17:57
回答 2查看 2.6K关注 0票数 1

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

代码语言:javascript
运行
复制
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')

输出:

另外,我想给出标题的顶部和左边的图表。“这里的一些文字”是标题,黄色行显示我想要的另一个标题。想要的输出没有额外的白色空间在顶部。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-18 11:56:42

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

代码语言:javascript
运行
复制
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()

在这种情况下,外线是裁剪的,因为这条线延伸到其位置的两侧。一个人可能还会在桌子周围加一点垫子。例如,有5个像素的填充,

代码语言:javascript
运行
复制
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())

票数 3
EN

Stack Overflow用户

发布于 2017-12-18 11:02:14

我认为你不能删除你桌子上面和下面的空格。阅读文件,您已经拥有了您将实现的最紧的

bbox_inches : str或Bbox,可选 以英寸为单位。只保存该数字的给定部分。如果“紧”,试着找出这个数字的紧bbox。如果没有,请使用savefig.bbox

但是,我已经为正确设置行和列做了一个工作示例。这是代码,跟在图像后面。

代码语言:javascript
运行
复制
from matplotlib import pyplot as plt 

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

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

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

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

我强烈建议您调整您的轴/图形设置后,,您的绘图完全绘制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47866272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档