, threshold=None, color=None, layout=None, layout_kwds={}, init_pos=None, root=0, labels=None, single_component=False, solid_edges='connectivities', dashed_edges=None, transitions=None, fontsize=None, fontweight='bold', text_kwds={}, node_size_scale=1, node_size_power=0.5, edge_width_scale=1, min_edge_width=None, max_edge_width=None, arrowsize=30, title=None, left_margin=0.01, random_state=0, pos=None, normalize_to_color=False, cmap=None, cax=None, colorbar=None, cb_kwds={}, frameon=None, add_pos=True, export_to_gexf=False, use_raw=True, colors=None, groups=None, plot=True, show=None, save=None, ax=None)

Plot the PAGA graph through thresholding low-connectivity edges.

Compute a coarse-grained layout of the data. Reuse this by passing init_pos='paga' to umap() or draw_graph() and obtain embeddings with more meaningful global topology [Wolf19].

This uses ForceAtlas2 or igraph’s layout algorithms for most layouts [Csardi06].

adata : AnnData

Annotated data matrix.

threshold : float or None, optional (default: 0.01)

Do not draw edges for weights below this threshold. Set to 0 if you want all edges. Discarding low-connectivity edges helps in getting a much clearer picture of the graph.

color : gene name or obs. annotation, optional (default: None)

The node colors. Also plots the degree of the abstracted graph when passing {‘degree_dashed’, ‘degree_solid’}.

labels : None, str, list, dict, optional (default: None)

The node labels. If None, this defaults to the group labels stored in the categorical for which paga() has been computed.

pos : np.ndarray, filename of .gdf file, optional (default: None)

Two-column array-like storing the x and y coordinates for drawing. Otherwise, path to a .gdf file that has been exported from Gephi or a similar graph visualization software.

layout : {'fa', 'fr', 'rt', 'rt_circular', 'eq_tree', ..}, optional (default: 'fr')

Plotting layout that computes positions. ‘fa’ stands for ForceAtlas2, ‘fr’ stands for Fruchterman-Reingold, ‘rt’ stands for Reingold Tilford. ‘eq_tree’ stands for ‘eqally spaced tree’. All but ‘fa’ and ‘eq_tree’ are igraph layouts. All other igraph layouts are also permitted. See also parameter pos and draw_graph().

init_pos : np.ndarray, optional (default: None)

Two-column array storing the x and y coordinates for initializing the layout.

random_state : int or None, optional (default: 0)

For layouts with random initialization like ‘fr’, change this to use different intial states for the optimization. If None, the initial state is not reproducible.

root : int, str or list of int, optional (default: 0)

If choosing a tree layout, this is the index of the root node or a list of root node indices. If this is a non-empty vector then the supplied node IDs are used as the roots of the trees (or a single tree if the graph is connected). If this is None or an empty list, the root vertices are automatically calculated based on topological sorting.

transitions : str or None, optional (default: None)

Key for .uns['paga'] that specifies the matrix that - for instance 'transistions_confidence' - that specifies the matrix that stores the arrows.

solid_edges : str, optional (default: ‘paga_connectivities’)

Key for .uns['paga'] that specifies the matrix that stores the edges to be drawn solid black.

dashed_edges : str or None, optional (default: None)

Key for .uns['paga'] that specifies the matrix that stores the edges to be drawn dashed grey. If None, no dashed edges are drawn.

single_component : bool, optional (default: False)

Restrict to largest connected component.

fontsize : int (default: None)

Font size for node labels.

text_kwds : keywords for matplotlib.text

See here.

node_size_scale : float (default: 1.0)

Increase or decrease the size of the nodes.

node_size_power : float (default: 0.5)

The power with which groups sizes influence the radius of the nodes.

edge_width_scale : float, optional (default: 5)

Edge with scale in units of rcParams['lines.linewidth'].

min_edge_width : float, optional (default: None)

Min width of solid edges.

max_edge_width : float, optional (default: None)

Max width of solid and dashed edges.

arrowsize : int, optional (default: 30)

For directed graphs, choose the size of the arrow head head’s length and width. See :py:class: matplotlib.patches.FancyArrowPatch for attribute mutation_scale for more info.

export_to_gexf : bool, optional (default: None)

Export to gexf format to be read by graph visualization programs such as Gephi.

normalize_to_color : bool, optional (default: False)

Whether to normalize categorical plots to color or the underlying grouping.

cmap : color map

The color map.

cax : Axes

A matplotlib axes object for a potential colorbar.

cb_kwds : colorbar keywords

See here, for instance, ticks.

add_pos : bool, optional (default: True)

Add the positions to adata.uns['paga'].

title : str, optional (default: None)

Provide a title.

frameon : bool, optional (default: None)

Draw a frame around the PAGA graph.

hide : bool, optional (default: False)

Do not create a plot.

plot : bool, optional (default: True)

If False, do not create the figure, simply compute the layout.

save : bool or str, optional (default: None)

If True or a str, save the figure. A string is appended to the default filename. Infer the filetype if ending on {‘.pdf’, ‘.png’, ‘.svg’}.

ax : Axes

A matplotlib axes object.

Return type

Axes, List[Axes], NoneUnion[Axes, List[Axes], None]


If show==False, one or more Axes objects. Adds 'pos' to adata.uns['paga'] if add_pos is True.


When initializing the positions, note that - for some reason - igraph mirrors coordinates along the x axis… that is, you should increase the maxiter parameter by 1 if the layout is flipped.

See also

tl.paga(), pl.paga_compare(), pl.paga_path()