

def plot_ica_components(ica, picks=None, ch_type=None, res=64, layout=None, vmin=None, vmax=None, cmap='RdBu_r', sensors=True, colorbar=False, title=None, show=True, outlines='head', contours=6, image_interp='bilinear', head_pos=None):
    "Project unmixing matrix on interpolated sensor topogrpahy.\n\n    Parameters\n    ----------\n    ica : instance of mne.preprocessing.ICA\n        The ICA solution.\n    picks : int | array-like | None\n        The indices of the sources to be plotted.\n        If None all are plotted in batches of 20.\n    ch_type : 'mag' | 'grad' | 'planar1' | 'planar2' | 'eeg' | None\n        The channel type to plot. For 'grad', the gradiometers are\n        collected in pairs and the RMS for each pair is plotted.\n        If None, then channels are chosen in the order given above.\n    res : int\n        The resolution of the topomap image (n pixels along each side).\n    layout : None | Layout\n        Layout instance specifying sensor positions (does not need to\n        be specified for Neuromag data). If possible, the correct layout is\n        inferred from the data.\n    vmin : float | callable | None\n        The value specifying the lower bound of the color range.\n        If None, and vmax is None, -vmax is used. Else np.min(data).\n        If callable, the output equals vmin(data). Defaults to None.\n    vmax : float | callable | None\n        The value specifying the upper bound of the color range.\n        If None, the maximum absolute value is used. If callable, the output\n        equals vmax(data). Defaults to None.\n    cmap : matplotlib colormap\n        Colormap.\n    sensors : bool | str\n        Add markers for sensor locations to the plot. Accepts matplotlib\n        plot format string (e.g., 'r+' for red plusses). If True, a circle\n        will be used (via .add_artist). Defaults to True.\n    colorbar : bool\n        Plot a colorbar.\n    title : str | None\n        Title to use.\n    show : bool\n        Show figure if True.\n    outlines : 'head' | 'skirt' | dict | None\n        The outlines to be drawn. If 'head', the default head scheme will be\n        drawn. If 'skirt' the head scheme will be drawn, but sensors are\n        allowed to be plotted outside of the head circle. If dict, each key\n        refers to a tuple of x and y positions, the values in 'mask_pos' will\n        serve as image mask, and the 'autoshrink' (bool) field will trigger\n        automated shrinking of the positions due to points outside the outline.\n        Alternatively, a matplotlib patch object can be passed for advanced\n        masking options, either directly or as a function that returns patches\n        (required for multi-axis plots). If None, nothing will be drawn.\n        Defaults to 'head'.\n    contours : int | False | None\n        The number of contour lines to draw. If 0, no contours will be drawn.\n    image_interp : str\n        The image interpolation to be used. All matplotlib options are\n        accepted.\n    head_pos : dict | None\n        If None (default), the sensors are positioned such that they span\n        the head circle. If dict, can have entries 'center' (tuple) and\n        'scale' (tuple) for what the center and scale of the head should be\n        relative to the electrode locations.\n\n    Returns\n    -------\n    fig : instance of matplotlib.pyplot.Figure or list\n        The figure object(s).\n    "
    import matplotlib.pyplot as plt
    from mpl_toolkits.axes_grid import make_axes_locatable
    from ..channels import _get_ch_type
    if (picks is None):
        ch_type = _get_ch_type(ica, ch_type)
        n_components = ica.mixing_matrix_.shape[1]
        p = 20
        figs = []
        for k in range(0, n_components, p):
            picks = range(k, min((k + p), n_components))
            fig = plot_ica_components(ica, picks=picks, ch_type=ch_type, res=res, layout=layout, vmax=vmax, cmap=cmap, sensors=sensors, colorbar=colorbar, title=title, show=show, outlines=outlines, contours=contours, image_interp=image_interp)
            figs.append(fig)
        return figs
    elif np.isscalar(picks):
        picks = [picks]
    ch_type = _get_ch_type(ica, ch_type)
    data = np.dot(ica.mixing_matrix_[:, picks].T, ica.pca_components_[:ica.n_components_])
    if (ica.info is None):
        raise RuntimeError("The ICA's measurement info is missing. Please fit the ICA or add the corresponding info object.")
    (data_picks, pos, merge_grads, names, _) = _prepare_topo_plot(ica, ch_type, layout)
    (pos, outlines) = _check_outlines(pos, outlines, head_pos)
    if (outlines not in (None, 'head')):
        (image_mask, pos) = _make_image_mask(outlines, pos, res)
    else:
        image_mask = None
    data = np.atleast_2d(data)
    data = data[:, data_picks]
    (fig, axes) = _prepare_trellis(len(data), max_col=5)
    if (title is None):
        title = 'ICA components'
    fig.suptitle(title)
    if merge_grads:
        from ..channels.layout import _merge_grad_data
    for (ii, data_, ax) in zip(picks, data, axes):
        ax.set_title(('IC #%03d' % ii), fontsize=12)
        data_ = (_merge_grad_data(data_) if merge_grads else data_)
        (vmin_, vmax_) = _setup_vmin_vmax(data_, vmin, vmax)
        im = plot_topomap(data_.flatten(), pos, vmin=vmin_, vmax=vmax_, res=res, axes=ax, cmap=cmap, outlines=outlines, image_mask=image_mask, contours=contours, image_interp=image_interp, show=False)[0]
        if colorbar:
            divider = make_axes_locatable(ax)
            cax = divider.append_axes('right', size='5%', pad=0.05)
            cbar = plt.colorbar(im, cax=cax, format='%3.2f', cmap=cmap)
            cbar.ax.tick_params(labelsize=12)
            cbar.set_ticks((vmin_, vmax_))
            cbar.ax.set_title('AU', fontsize=10)
        _hide_frame(ax)
    tight_layout(fig=fig)
    fig.subplots_adjust(top=0.95)
    fig.canvas.draw()
    plt_show(show)
    return fig

dataset/ETHPy150Open mne-tools/mne-python/mne/viz/topomap.py plot_ica_components/original