我是 seaborn 的新手,所以如果这是一个愚蠢的问题,请原谅......我计划使用 seaborn 来绘制我的空间数据(作为栅格数据)的多个方面。源数据来自 netcdf 文件...在导入和一些清理之后,我确实有一个以下列布局的 pandas 数据框:
lat lon value year
10 12 1.2 2010
10 13 1.1 2010
...
10 12 1.2 2011
...
如果我使用散点图,我可以获得一些视觉输出(我使用 cartopy 进行地理变换绘图):
import seaborn as sns
import cartopy
import cartopy.crs as ccrs
import xray
ds1 = xray.open_dataset("example1.nc")['value']
ds2 = xray.open_dataset("example2.nc")['value']
df1 = ds1.to_dataframe()
df2 = ds2.to_dataframe()
# make lat, lon regular cols
df1.reset_index(inplace=True)
df2.reset_index(inplace=True)
# add a year column
df1['year'] = 2010
df2['year'] = 2011
# produce the final dataframe
df = pd.concat( [df1, df2] )
g = sns.FacetGrid(df, col="year", hue="value",
subplot_kws=dict(projection=ccrs.PlateCarree()), size=4.5,
sharex=False, sharey=False, despine=False)
g.map(plt.scatter, "lon", "lat", s=5, transform=ccrs.PlateCarree())
for ax in g.axes.ravel():
ax.add_feature(cartopy.feature.COASTLINE)
但是,当我想绘制栅格数据时我迷路了......我想我应该使用 pandas.meshgrid、plot.contourf 和其他一些魔法,但我无法为我的生活弄清楚我是如何从 pandas 变成 faceted光栅图...