Python 循环更新绘图

Python update plots in a loop

我想画一些Census Data on a US map to achieve something like this: https://censusreporter.org/data/map/?table=B23025&geo_ids=01000US,040|01000US&primary_geo_id=01000US

但与上面的 link 不同,我想创建一个动画,在其中循环更新不同年份的情节。 这是我到目前为止所拥有的:

def StatesPlot(df, data, start_year, end_year, cmap):
    for year in range(start_year, end_year+1):
        f,ax = plt.subplots(1,1, figsize=(10, 5.4), sharex=True, sharey=True, dpi=300)
        f.tight_layout()
        plt.title('United States Map - Variable: ' + data + ' Year: ' +str(year), fontsize=12)
        ax.set_axis_off()
        divider = make_axes_locatable(ax)
        cax = divider.append_axes("right", size="3%", pad=0, alpha=0.1)
        clear_output(wait=True)
        tmp = df[df['YEAR'] == year]
        tmp.plot(data, ax=ax, alpha=0.5, cmap=cmap, edgecolor='k', legend=True, cax=cax, linewidth=0.1)
        plt.show()
        time.sleep(1)

StatesPlot(us_cont, 'EMPLOYMENT_STATUS', 2015, 2019, 'viridis')

这很好用。问题是我想创建这个动画来比较不同年份的人口普查数据,但截至目前,这每次都会更新比例 (cax),所以我无法比较数据。如何修复循环外的比例并更新绘图?

我认为您只想使用 vminvmax 参数在 tmp.plot 行中设置颜色条的最大值和最小值。尝试在循环之前添加这样的内容:

datamin = df[data].min()
datmax = df[data].max()

然后更改绘图线以反映这些限制:

tmp.plot(data, ax=ax, alpha=0.5, cmap=cmap, 
         edgecolor='k', legend=True, cax=cax, 
         linewidth=0.1, vmin=datamin, vmax=datamax)