我经常使用iPython笔记本和matplotlib,虽然在调用imshow()时自动显示图像的情况很多时候我很高兴,但有时我想阻止这种行为。
具体来说,我正在遍历一个非常大的数组,并为每个元素生成一个matplotlib图形,该图形应保存到磁盘。在图形创建的过程中,我必须调用imshow()将现有图像(在我的情况下是地图截图)绘制到轴上,以便稍后在其上绘制其他材料。每当我在过程中调用imshow时,最终的图形会在iPython笔记本中内联显示,如何防止这种情况发生?
我的代码看起来像这样:
具体来说,我正在遍历一个非常大的数组,并为每个元素生成一个matplotlib图形,该图形应保存到磁盘。在图形创建的过程中,我必须调用imshow()将现有图像(在我的情况下是地图截图)绘制到轴上,以便稍后在其上绘制其他材料。每当我在过程中调用imshow时,最终的图形会在iPython笔记本中内联显示,如何防止这种情况发生?
我的代码看起来像这样:
import matplotlib as plt
fig = plt.pyplot.figure(figsize=(20,20))
im2 = plt.pyplot.imread('/some/dir/fancy-map.png')
# Magic to calculate points, x_min etc.
fig.clf()
ax = fig.gca(xlim=(x_min, x_max), ylim=(y_min, y_max))
ax.imshow(im2, extent=(4, 4.5746, 42.5448, 43.3791), aspect=1.5)
raster = ax.imshow(points, vmin = 0, vmax=maxval, extent=(x_min, x_max, y_min, y_max), aspect=1.5, origin='lower')
fig.colorbar(raster)
ax.set_title('coordinates plot')
fig.savefig("fancy-annotated-map.png", bbox_inches=0)
pylab.ioff()
,但肯定会考虑将其制作成 iPython 魔术函数。 - Robin