为了去掉图中的框架,我写道
frameon=False
与pyplot.figure
完美配合,但在matplotlib.Figure
中,它只会移除灰色背景,框架会保留下来。另外,我只想显示线条,而图的其余部分都是透明的。
使用pyplot我可以做任何我想做的事情,我想使用matplotlib来做这件事,因为有一些很长的原因,我不想提及扩展我的问题。
发布于 2013-02-17 02:03:21
首先,如果您使用的是savefig
,请注意,除非您另外指定(例如fig.savefig('blah.png', transparent=True)
),否则在保存时它将覆盖地物的背景颜色。
但是,要在屏幕上删除轴和图形的背景,您需要将ax.patch
和fig.patch
都设置为不可见。
例如。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10))
for item in [fig, ax]:
item.patch.set_visible(False)
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)
(当然,你不能区分SO的白色背景,但一切都是透明的……)
如果您不想显示线以外的任何内容,也可以使用ax.axis('off')
关闭轴
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10))
fig.patch.set_visible(False)
ax.axis('off')
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)
但是,在这种情况下,您可能希望使轴占据完整的图形。如果手动指定轴的位置,则可以告诉它采用完整的图形(或者,也可以使用subplots_adjust
,但对于单个轴的情况更简单)。
import matplotlib.pyplot as plt
fig = plt.figure(frameon=False)
ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')
ax.plot(range(10))
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)
发布于 2015-02-25 21:22:30
正如Joe Kington指出的那样,ax.axis('off')
将删除除绘制线之外的所有内容。
对于那些只想移除框架(边框)并保留标签、滚动条等的人,可以通过访问轴上的spines
对象来实现。给定轴对象ax
,下面的代码应该删除所有四个边的边界:
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
而且,如果从绘图中删除了x
和y
标记:
ax.get_xaxis().set_ticks([])
ax.get_yaxis().set_ticks([])
发布于 2018-09-24 12:28:50
在更新版本的matplotlib中摆脱丑陋框架的最简单方法是:
import matplotlib.pyplot as plt
plt.box(False)
如果您真的必须始终使用面向对象的方法,那么就这样做:ax.set_frame_on(False)
。
https://stackoverflow.com/questions/14908576
复制相似问题