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
),所以我无法比较数据。如何修复循环外的比例并更新绘图?
我认为您只想使用 vmin
和 vmax
参数在 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)
我想画一些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
),所以我无法比较数据。如何修复循环外的比例并更新绘图?
我认为您只想使用 vmin
和 vmax
参数在 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)