繁体   English   中英

并排绘制来自两个 xarray 的两个图形

[英]Plotting two figures from two xarrays side by side

我正在尝试 plot 两个子图并排。 每个子图都是来自 xarray 的变量,而 plot 是一个投影。

我的绘图 function 是:

from matplotlib import pyplot as plt
import cartopy.crs as ccrs
import cartopy

def plot_avg(data, **kwargs):


    ax = plt.axes(projection=ccrs.Orthographic(central_latitude=-90.0))

    ax.coastlines(resolution='10m',zorder=3)
    ax.gridlines(color='gray')
    ax.add_feature(cartopy.feature.LAND, zorder=1,facecolor=cartopy.feature.COLORS['land_alt1'])
    data.plot(ax = ax, transform=ccrs.PlateCarree(),
               vmin = 34.4 , vmax=35.81 , levels=17 ,
               cmap=Becki, cbar_kwargs={'shrink': 0.3})

主要代码是:

fig = plt.figure()

ax1 = fig.add_subplot(111)
plot_avg(var1)
ax2 = fig.add_subplot(122)
plot_avg(var2)

但由于某种原因我做不到,我总是得到一个带有两个颜色条的 plot:

在此处输入图像描述

我能做些什么不同的事情? 我很难使用 xarray 中的 plot 对象。

用于绘图的示例数据文件在这里: netcdf 文件

您在这里创建了太多轴。 确保只创建要使用的两个轴。

def plot_avg(data, ax, **kwargs):
    ax.coastlines(resolution='10m',zorder=3)
    ax.gridlines(color='gray')
    ax.add_feature(cartopy.feature.LAND, zorder=1,facecolor=cartopy.feature.COLORS['land_alt1'])
    data.plot(ax = ax, transform=ccrs.PlateCarree(),
               vmin = 34.4 , vmax=35.81 , levels=17 ,
               cmap=Becki, cbar_kwargs={'shrink': 0.3})

fig = plt.figure()

ax1 = fig.add_subplot(121, projection=ccrs.Orthographic(central_latitude=-90.0))
plot_avg(var1, ax1)
ax2 = fig.add_subplot(122, projection=ccrs.Orthographic(central_latitude=-90.0))
plot_avg(var2, ax2)

尝试将ax定义为 function 的参数:

def plot_avg(data, ax, **kwargs):


    ax = plt.axes(projection=ccrs.Orthographic(central_latitude=-90.0))

    ax.coastlines(resolution='10m',zorder=3)
    ax.gridlines(color='gray')
    ax.add_feature(cartopy.feature.LAND, zorder=1,facecolor=cartopy.feature.COLORS['land_alt1'])
    data.plot(ax = ax, transform=ccrs.PlateCarree(),
               vmin = 34.4 , vmax=35.81 , levels=17 ,
               cmap=Becki, cbar_kwargs={'shrink': 0.3})

然后将您创建的ax传递给 function 调用:

fig = plt.figure()

ax1 = fig.add_subplot(111)
plot_avg(var1, ax1)
ax2 = fig.add_subplot(122)
plot_avg(var2, ax2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM