Python 使用geopandas在地图上绘制值

Python 使用geopandas在地图上绘制值,python,pandas,dataframe,matplotlib,geopandas,Python,Pandas,Dataframe,Matplotlib,Geopandas,我有五个国家1991-2020年的数据 Date Temperature Units Year Month Statistics Country CODE Jan 2020 -26.2 Celsius 1991 Jan Average Canada CAN Feb 2020 -21.0 Celsius

我有五个国家1991-2020年的数据

Date          Temperature    Units  Year Month Statistics Country CODE
                                                             
Jan 2020        -26.2  Celsius  1991   Jan    Average  Canada  CAN
Feb 2020        -21.0  Celsius  1991   Feb    Average  Canada  CAN
Mar 2020        -18.2  Celsius  1991   Mar    Average  Canada  CAN
Apr 2020         -8.6  Celsius  1991   Apr    Average  Canada  CAN
May 2020          0.8  Celsius  1991   May    Average  Canada  CAN
m2020

在世界地图上,我正在绘制2020年每个国家的气温。我想为每个月创建一个图,所以我创建了一个循环,每个月循环一次。当我作图时,我得到了12个图,但温度值在整个月内没有变化。你知道有什么问题吗?在我的图中,我想看到,例如,在加拿大1月份,蓝色表示-26,而在5月份,绿色表示0.8度

我这样做:

world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))world.columns=['pop_est', 'continent', 'name', 'CODE', 'gdp_md_est', 'geometry']
    
for i in m2020.groupby(['Month']).Month:
    fig, ax = plt.subplots(figsize=(15,12))
    world.plot(ax=ax, color='lightgrey')
    m2020.plot(x="longitude", y="latitude", kind="scatter",
                      c='Temperature', colormap="hsv", 
                      ax=ax)
    plt.title(i[0])
    plt.show()

您可以尝试首先在for循环之前插入最小和最大温度变量的范围:

m2020.plot("Temperature",x="longitude", y="latitude", kind="scatter",
                      vmin=vmin, vmax=vmax, colormap="hsv",ax=ax)
vmin=m2020[“温度”].min()

vmax=m2020[“温度”].max()

然后修改for循环内的第三行:

m2020.plot("Temperature",x="longitude", y="latitude", kind="scatter",
                      vmin=vmin, vmax=vmax, colormap="hsv",ax=ax)