首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib savefig图片修剪

Matplotlib savefig图片修剪
EN

Stack Overflow用户
提问于 2010-06-28 12:35:02
回答 3查看 66.4K关注 0票数 32

下面的示例代码将生成一个不带轴的基本线状图,并将其另存为SVG文件:

代码语言:javascript
复制
import matplotlib.pyplot as plt
plt.axis('off')
plt.plot([1,3,1,2,3])
plt.plot([3,1,1,2,1])
plt.savefig("out.svg", transparent = True)

如何设置图像的分辨率/尺寸?在线形图之外的图像的所有边上都有填充。如何删除填充,使线条显示在图像的边缘?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-28 13:57:46

我经常惊讶于在matplotlib中有那么多方法可以做同样的事情。

因此,我相信有人可以让这段代码变得更加简洁。

无论如何,这应该清楚地展示了如何去解决你的问题。

代码语言:javascript
复制
>>> import pylab
>>> fig = pylab.figure()

>>> pylab.axis('off')
(0.0, 1.0, 0.0, 1.0)
>>> pylab.plot([1,3,1,2,3])
[<matplotlib.lines.Line2D object at 0x37d8cd0>]
>>> pylab.plot([3,1,1,2,1])
[<matplotlib.lines.Line2D object at 0x37d8d10>]

>>> fig.get_size_inches()    # check default size (width, height)
array([ 8.,  6.])
>>> fig.set_size_inches(4,3) 
>>> fig.get_dpi()            # check default dpi (in inches)
80
>>> fig.set_dpi(40)

# using bbox_inches='tight' and pad_inches=0 
# I managed to remove most of the padding; 
# but a small amount still persists
>>> fig.savefig('out.svg', transparent=True, bbox_inches='tight', pad_inches=0)

savefig()Documentation

票数 58
EN

Stack Overflow用户

发布于 2010-06-28 23:56:26

默认轴对象为标题、刻度标签等留出了一些空间。创建填充整个区域的自己的轴对象:

代码语言:javascript
复制
fig=figure()
ax=fig.add_axes((0,0,1,1))
ax.set_axis_off()
ax.plot([3,1,1,2,1])
ax.plot([1,3,1,2,3])
fig.savefig('out.svg')

在svg格式中,我看不到底部的线,但在png格式中,我可以看到,所以它可能是svg渲染器的一个特性。您可能只想添加一点填充,以保持所有内容都可见。

票数 3
EN

Stack Overflow用户

发布于 2019-12-09 23:02:35

减少大多数填充的一种非常简单的方法是在保存图形之前调用tight_layout()

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 200)

fig, ax = plt.subplots()
ax.plot(x, np.sin(x))

fig.tight_layout()
fig.savefig('plot.pdf')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3130072

复制
相关文章

相似问题

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