通过调用clf()清除BufferRegion

时间:2012-10-20 07:34:17

标签: python matplotlib matplotlib-basemap

我有一个应用程序,我想使用Basemap从shapefile中绘制县。绘制县多边形是渲染的瓶颈,因为我将绘制美国的同一区域(多次),我宁愿不必绘制所有多边形而不是我需要的。所以我有想法将县绘制成具有透明背景的图形,使用copy_from_bbox()将轴复制到像素缓冲区,并在需要绘制县时使用restore_region()恢复缓冲区。 / p>

基本代码如下:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

map = Basemap(...) # Create Basemap object

map.readshapefile("countyp020", 'counties', linewidth=0.5) # Draws the county lines
plt.gcf().patch.set_alpha(0.0)
plt.gca().patch.set_alpha(0.0)

# Copy to the pixel buffer (county_buffer is of type BufferRegion)
county_buffer = plt.gcf().canvas.copy_from_bbox(plt.gca().bbox)

plt.clf() # This line is problematic (see below)

# Plot my data here ...

# Restore the pixel buffer
plt.gcf().canvas.restore_region(county_buffer)
plt.gcf().canvas.blit(plt.gca().bbox) # Not sure if this line is necessary

plt.gcf().canvas.draw()

它的作用就像一个魅力...除了清除图形的线条。清除渲染之间的数字显然也会清除BufferRegion对象,因为我更新了标题和颜色条,我还想清除渲染之间的数字。

所以我的问题是,是否有人知道清除图形并保持像素缓冲区完整的方法?我无法在BufferRegioncopy_from_bbox()restore_region()上找到太多文档,因此调试它有点困难。如果没有简单的方法,那么有没有人知道另一种方法基本上做我想做的事情?

提前致谢!

0 个答案:

没有答案