<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def map_dataarray(self, func, x, y, **kwargs):
 """ Apply a plotting function to a 2d facet's subset of the data. This is more convenient and less general than ``FacetGrid.map`` Parameters func : callable A plotting function with the same signature as a 2d xarray plotting method such as `xarray.plot.imshow` x, y : string Names of the coordinates to plot on x, y axes kwargs : additional keyword arguments to func Returns ------- self : FacetGrid object """


        if kwargs.get('cbar_ax', None) is not None:
            raise ValueError('cbar_ax not supported by FacetGrid.')

        cmap_params, cbar_kwargs = _process_cmap_cbar_kwargs(
            func, kwargs, self.data.values)

        self._cmap_extend = cmap_params.get('extend')

        # Order is important
        func_kwargs = kwargs.copy()
        func_kwargs.update(cmap_params)
        func_kwargs.update({'add_colorbar': False, 'add_labels': False})

        # Get x, y labels for the first subplot
        x, y = _infer_xy_labels(
            darray=self.data.loc[self.name_dicts.flat[0]], x=x, y=y,
            imshow=func.__name__ == 'imshow', rgb=kwargs.get('rgb', None))

        for d, ax in zip(self.name_dicts.flat, self.axes.flat):
            # None is the sentinel value
            if d is not None:
                subset = self.data.loc[d]
                mappable = func(subset, x=x, y=y, ax=ax, **func_kwargs)
                self._mappables.append(mappable)

        self._cmap_extend = cmap_params.get('extend')
        self._finalize_grid(x, y)

        if kwargs.get('add_colorbar', True):
            self.add_colorbar(**cbar_kwargs)

        return self