[英]Plotting values on map with 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 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
pop_est continent name CODE ... Country ISO2 latitude longitude
0 35623680 North America Canada CAN ... Canada CA 56.130366 -106.346771
1 35623680 North America Canada CAN ... Canada CA 56.130366 -106.346771
2 35623680 North America Canada CAN ... Canada CA 56.130366 -106.346771
3 35623680 North America Canada CAN ... Canada CA 56.130366 -106.346771
4 35623680 North America Canada CAN ... Canada CA 56.130366 -106.346771
在世界 map 中,我正在绘制 2020 年每个国家/地区的温度。我想为每个月创建一个 plot,所以我创建了一个每个月都经过的循环。 当我 plot 时,我确实得到了 12 个图,但温度的值在几个月内都没有变化。 你知道可能是什么问题吗? 在我的 plot 中,我想看到例如 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 循环之前插入最小和最大温度变量的范围:
vmin=m2020["温度"].min()
vmax=m2020["温度"].max()
然后修改for循环内的第三行:
m2020.plot("Temperature",x="longitude", y="latitude", kind="scatter",
vmin=vmin, vmax=vmax, colormap="hsv",ax=ax)
这里做了一个类似的练习:
当只是复制粘贴代码时,在我的案例中出现了一些错误。 我需要做一些调试,但最后你可以让它工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.