ベースマップを使用してシェープファイルから郡を描画したいアプリケーションがあります。郡のポリゴンの描画はレンダリングのボトルネックです。米国の同じ地域を (何度も) 描画するので、必要以上にすべてのポリゴンを描画する必要はありません。そこで、背景が透明な図に郡を描画し、 を使用して軸をピクセル バッファーにコピーし、郡を描画する必要があるときに をcopy_from_bbox()
使用してバッファーを復元するというアイデアがありました。restore_region()
基本的なコードは次のようになります。
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()
ので、これをデバッグするのは少し困難でした。それを回避する簡単な方法がない場合、基本的に私がやろうとしていることを別の方法で行う方法を知っている人はいますか?
前もって感謝します!