我有一个应用程序,我想使用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对象,因为我更新了标题和颜色条,我还想清除渲染之间的数字。
所以我的问题是,是否有人知道清除图形并保持像素缓冲区完整的方法?我无法在BufferRegion
,copy_from_bbox()
或restore_region()
上找到太多文档,因此调试它有点困难。如果没有简单的方法,那么有没有人知道另一种方法基本上做我想做的事情?
提前致谢!