Source code for mne_connectivity.viz.circle

"""Functions to plot on circle as for connectivity."""

# Authors: Adam Li <adam2392@gmail.com>
#          Alex Rockhill <aprockhill@mailbox.org>
#
# License: Simplified BSD

from mne.utils import warn
from mne.viz.circle import _plot_connectivity_circle


[docs] def plot_connectivity_circle( con, node_names, indices=None, n_lines=None, node_angles=None, node_width=None, node_height=1.0, node_colors=None, facecolor="black", textcolor="white", node_edgecolor="black", linewidth=1.5, colormap="hot", vmin=None, vmax=None, colorbar=True, title=None, colorbar_size=0.2, colorbar_pos=(-0.3, 0.1), fontsize_title=12, fontsize_names=8, fontsize_colorbar=8, padding=6.0, ax=None, fig=None, subplot=None, interactive=True, node_linewidth=2.0, show=True, ): """Visualize connectivity as a circular graph. Parameters ---------- con : array | Connectivity Connectivity scores. Can be a square matrix, or a 1D array. If a 1D array is provided, "indices" has to be used to define the connection indices. node_names : list of str Node names. The order corresponds to the order in con. indices : tuple of array | None Two arrays with indices of connections for which the connections strengths are defined in con. Only needed if con is a 1D array. n_lines : int | None If not None, only the n_lines strongest connections (strength=abs(con)) are drawn. node_angles : array, shape (n_node_names,) | None Array with node positions in degrees. If None, the nodes are equally spaced on the circle. See mne.viz.circular_layout. node_width : float | None Width of each node in degrees. If None, the minimum angle between any two nodes is used as the width. node_height : float The relative height of the colored bar labeling each node. Default 1.0 is the standard height. node_colors : list of tuple | list of str List with the color to use for each node. If fewer colors than nodes are provided, the colors will be repeated. Any color supported by matplotlib can be used, e.g., RGBA tuples, named colors. facecolor : str Color to use for background. See matplotlib.colors. textcolor : str Color to use for text. See matplotlib.colors. node_edgecolor : str Color to use for lines around nodes. See matplotlib.colors. linewidth : float Line width to use for connections. colormap : str | instance of matplotlib.colors.LinearSegmentedColormap Colormap to use for coloring the connections. vmin : float | None Minimum value for colormap. If None, it is determined automatically. vmax : float | None Maximum value for colormap. If None, it is determined automatically. colorbar : bool Display a colorbar or not. title : str The figure title. colorbar_size : float Size of the colorbar. colorbar_pos : tuple, shape (2,) Position of the colorbar. fontsize_title : int Font size to use for title. fontsize_names : int Font size to use for node names. fontsize_colorbar : int Font size to use for colorbar. padding : float Space to add around figure to accommodate long labels. ax : instance of matplotlib PolarAxes | None The axes to use to plot the connectivity circle. fig : None | instance of matplotlib.figure.Figure The figure to use. If None, a new figure with the specified background color will be created. Deprecated: will be removed in version 0.5. subplot : int | tuple, shape (3,) Location of the subplot when creating figures with multiple plots. E.g. 121 or (1, 2, 1) for 1 row, 2 columns, plot 1. See matplotlib.pyplot.subplot. Deprecated: will be removed in version 0.5. interactive : bool When enabled, left-click on a node to show only connections to that node. Right-click shows all connections. node_linewidth : float Line with for nodes. show : bool Show figure if True. Returns ------- fig : instance of matplotlib.figure.Figure The figure handle. ax : instance of matplotlib.projections.polar.PolarAxes The subplot handle. Notes ----- This code is based on a circle graph example by Nicolas P. Rougier By default, :func:`matplotlib.pyplot.savefig` does not take ``facecolor`` into account when saving, even if set when a figure is generated. This can be addressed via, e.g.:: >>> fig.savefig(fname_fig, facecolor='black') # doctest:+SKIP If ``facecolor`` is not set via :func:`matplotlib.pyplot.savefig`, the figure labels, title, and legend may be cut off in the output figure. """ import matplotlib.pyplot as plt from mne_connectivity.base import BaseConnectivity if isinstance(con, BaseConnectivity): con = con.get_data() if fig is not None or subplot is not None: warn( "Passing a `fig` and `subplot` is deprecated and not be " "supported after mne-connectivity version 0.4. Please " "use the `ax` argument and pass a matplotlib axes object " "with polar coordinates instead", DeprecationWarning, ) if ax is None: # don't overwrite ax if passed if fig is None: fig = plt.figure(figsize=(8, 8), facecolor=facecolor) if not isinstance(subplot, tuple): subplot = (subplot,) ax = plt.subplot(*subplot, polar=True) return _plot_connectivity_circle( con=con, node_names=node_names, indices=indices, n_lines=n_lines, node_angles=node_angles, node_width=node_width, node_height=node_height, node_colors=node_colors, facecolor=facecolor, textcolor=textcolor, node_edgecolor=node_edgecolor, linewidth=linewidth, colormap=colormap, vmin=vmin, vmax=vmax, colorbar=colorbar, title=title, colorbar_size=colorbar_size, colorbar_pos=colorbar_pos, fontsize_title=fontsize_title, fontsize_names=fontsize_names, fontsize_colorbar=fontsize_colorbar, padding=padding, ax=ax, interactive=interactive, node_linewidth=node_linewidth, show=show, )