我正在繪製一些研究項目的天氣數據。情節包括18個時間步。我決定實現這一目標的最佳方法是爲每個時間步創建一個新的情節,將其保存爲一個文件,併爲下一個時間步創建新的情節(使用for循環)。繪製在一個循環(與底圖和pyplot)....問題與pyplot.clf()
例如:
map_init #[Basemap Instance]
extra_shapes #[Basemap.readshapefile object]
for i in range(timesteps):
#plot the weather data for current timestep to current plot
map_init.imshow(data[i])
# extra_shapes are county boundaries. Plot those as polygons
pyplot.Polygon(map_init.extra_shapes[i])
# Plot the state boundaries (in basemap)
map_init.drawstates()
# add a colorbar
pyplot.colorbar()
# Save the figure
pyplot.savefig(filepath)
#close figure and loop again (if necessary)
pyplot.clf()
問題在於pyplot.clf()
代碼工作,除了一兩件事。只有第一個陰謀如預期出現。每一個後續的陰謀缺少extra_shapes
(即沒有縣界限)。我不明白pyplot.clf()
的存在與pyplot.Polygon()
的失敗之間的關係?
如果刪除,則繪製extra_shapes
,但每個圖都有多個顏色條(取決於i
的值)。 pyplot.clf()
的唯一原因是避免在最終情節中有18個顏色條。有沒有辦法強制每個圖只有一個顏色條?
原始循環背後的邏輯是一個相當倉促的嘗試,使每個時間步完全分開的圖。 最初,map_init是在循環內部以及extra_shapes中分配的。 extra_shapes是一個相當大的數據集(因爲它包含美國和相關地區的每個縣的邊界)。爲循環的每次迭代分配extra_shapes變得非常耗時(與map_init相同)。所以把這兩個任務移到循環之外,一切都打破了。 – ayr0 2010-08-11 21:07:05