![](/img/trans.png)
[英]Load CSV stored as an Azure Blob directly into a Pandas data frame without saving to disk first
[英]Directly saving a figure to disk without rendering first on the screen
我目前有如下代码:
import os
import numpy as np
import pylab
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.patches import Polygon
import numpy as np
...
# Read my image
img = matplotlib.image.imread(p_image)
# Render it, move the coordinates' origin to the upper left corner
plt.imshow(np.flipud(img), cmap=cm.Greys_r,origin='upper')
# Overlay a polygon
p = Polygon( zip(xs,ys), alpha=0.2)
plt.gca().add_artist(p)
# Save it to disk
plt.savefig(p_image_output)
我如何直接将此图保存到磁盘而不先在屏幕上呈现它? (请注意,我希望该图保留在传递给imshow
的三个参数中指定的属性)
一种方法是将matplotlib
后端设置为没有交互式支持的东西。 一种标准方法是在开始使用或从matplotlib
其他部分导入之前插入以下行:
import matplotlib
matplotlib.use('Agg')
标准后端是TkAgg
,它使用带有Tk交互式事件循环的“ agg”(“反颗粒几何”)渲染。 使用Agg
可以进行相同类型的图形渲染,但是不会在屏幕上显示任何内容。
请注意,更改后端后, matplotlib
可能无法将其切换回原来的状态。 因此,如果您不希望在此脚本中在屏幕上绘制任何内容,则此方法效果最佳。
除非您使用ipython --pylab
,否则只有在执行show()
或draw()
,图形才应出现在屏幕上。 如果您不希望它显示在屏幕上,只需确保您没有进行任何这些呼叫即可。
另外,您可以在matplotlib中使用非交互式后端。 例如, Agg
后端。 只要确保您的~/.matplotlib/matplotlibrc
文件中具有以下设置:
backend : Agg
请记住,使用此后端,您将永远不会在屏幕上看到任何东西。 如果使用ipython
,则可以通过使用特定后端调用--pylab
来保留配置文件并具有交互式后端。 例如:
ipython --pylab=qt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.