matplotlib – iPython notebook:如何防止在imshow()上输出图像?

我和matplotlib一起使用了很多i Python笔记本,虽然很多情况下我很高兴它会在我调用imshow时自动显示图像()有时候我想阻止这种行为.

具体来说,我循环遍历一个非常大的数组,并在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(),最后返回pylab.ion():
# Obvs add arguments so you can pass in your data and plot choices.
def make_img():
    pylab.ioff()

    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,y_max))
    ax.imshow(im2,aspect=1.5)
    raster = ax.imshow(points,origin='lower')
    fig.colorbar(raster)
    ax.set_title('coordinates plot')
    fig.savefig("fancy-annotated-map.png",bBox_inches=0)

    pylab.ion()

>这假设您仅在IPython中使用该函数,否则始终导入pylab.更好地包装尝试…除了它周围所以该功能可以在别处使用.
>看看the template for making your own IPython Magic functions(%或%%函数调用,如%cpaste).一个很好的方法是创建你自己的魔法,比如%imnoshow或其他东西,它只包含调用imshow的部分,这样你就可以在不显示输出的情况下对imshow输出进行内联处理.既然你的问题没有处理一般的情节界面,而是这个特定的界面,我不会尝试在这里实现它,但希望上面的链接应该足以让你可以实现一些东西.
>另一种方法是按照设置自己的IPython configuration environment的说明,包括一些特殊的.py文件,你自己的导入和辅助类定义等.然后在那里放置你自己的特殊绘图功能,以便在启动时加载它们并且可以在IPython的全球范围内使用.我强烈推荐这个原因有以下几个原因:(a)你实际上可以为自己的帮助函数编写单元测试,如果你愿意,甚至可以在每次启动IPython时轻松测试! (b)这使您可以更轻松地进行版本控制,并封装您经常需要的辅助函数的逻辑. (c)您可以获得“只是在那里”功能的好处,而无需使其成为魔术功能或稍后导入.

相关文章

我最近重新拾起了计算机视觉,借助Python的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...