scanpy.pl.violin#
Note
Both backends are accessible as scanpy.pl.violin.
The active backend is chosen by scanpy.settings.preset:
the default is the legacy matplotlib backend;
set it to scanpy.Preset.ScanpyV2Preview to use the HoloViews backend.
- scanpy.plotting._v2.violin(adata, /, vdims, *, kdims=(), color=None)[source]
Shortcut for a violin plot.
- Overloads:
adata (AnnData), vdims (AdDim), kdims (Collection[AdDim]), color (AdDim | None) → hv.Violin
adata (AnnData), vdims (AdDim), kdims (Collection[AdDim]), color (Collection[AdDim]) → hv.Layout
adata (AnnData), vdims (Collection[AdDim]), kdims (Collection[AdDim]), color (AdDim | None) → hv.Layout
adata (AnnData), vdims (Collection[AdDim]), kdims (Collection[AdDim]), color (Collection[AdDim]) → hv.NdLayout
If
vdimsis anAdDim, a single violin is returned:>>> hv.Violin(adata, kdims, [vdims, color]).opts(violin_fill_color=color, ...)
If either
vdimsorcoloris a collection (not both), a layout is returned:>>> hv.Layout([violin(adata, kdims, vdim, ...) for vdim in vdims]).opts(...)
If both are collections, a 2D
NdLayoutgrid is returned, one violin per(vdim, color)combination.- Parameters:
- adata
AnnData The AnnData object.
- vdims
Collection[AdDim] |AdDim The value dimension(s). If a collection is passed, multiple plots are created (see above).
- kdims
Collection[AdDim] (default:()) The key dimensions (
colorwill be added automatically).- color
AdDim|Collection[AdDim] |None(default:None) The (categorical) color dimension: for each category, a violin is drawn. If a collection is passed, multiple plots are created (see above).
- adata
- Returns:
A
Violinplot or aLayout/NdLayoutcontaining multiple violin plots.
Examples
import scanpy as sc import holoviews as hv sc.settings.preset = sc.Preset.ScanpyV2Preview A = sc.pl.hv_init('bokeh') adata = sc.datasets.pbmc68k_reduced() sc.pl.violin(adata, A.obs[["percent_mito", "n_counts", "n_genes"]]).opts( hv.opts.Violin(ylim=(0, None)) )import scanpy as sc import holoviews as hv sc.settings.preset = sc.Preset.ScanpyV2Preview A = sc.pl.hv_init('matplotlib') adata = sc.datasets.pbmc68k_reduced() sc.pl.violin(adata, A.obs[["percent_mito", "n_counts", "n_genes"]]).opts( hv.opts.Violin(ylim=(0, None)) )import scanpy as sc import holoviews as hv sc.settings.preset = sc.Preset.ScanpyV2Preview A = sc.pl.hv_init('plotly') adata = sc.datasets.pbmc68k_reduced() sc.pl.violin(adata, A.obs[["percent_mito", "n_counts", "n_genes"]]).opts( hv.opts.Violin(ylim=(0, None)) )sc.pl.violin(adata, A.obs["S_score"], color=A.obs["bulk_labels"]).opts( width=500, xrotation=30 )
sc.pl.violin(adata, A.obs["S_score"], color=A.obs["bulk_labels"]).opts( width=500, xrotation=30 )
WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'width' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh', 'plotly']sc.pl.violin(adata, A.obs["S_score"], color=A.obs["bulk_labels"]).opts( width=500, xrotation=30 )
WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('plotly'). Option only applies to following backends: ['bokeh']sc.pl.violin( adata, vdims=A.obs[["percent_mito", "n_counts", "n_genes"]], color=A.obs[["phase", "louvain"]], )
sc.pl.violin( adata, vdims=A.obs[["percent_mito", "n_counts", "n_genes"]], color=A.obs[["phase", "louvain"]], )
WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('matplotlib'). Option only applies to following backends: ['bokeh']sc.pl.violin( adata, vdims=A.obs[["percent_mito", "n_counts", "n_genes"]], color=A.obs[["phase", "louvain"]], )
WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('plotly'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('plotly'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('plotly'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('plotly'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('plotly'). Option only applies to following backends: ['bokeh'] WARNING:param.main: Option 'violin_fill_color' for Violin type not valid for selected backend ('plotly'). Option only applies to following backends: ['bokeh']
- scanpy.pl.violin(adata, keys, groupby=None, *, log=False, use_raw=None, stripplot=True, jitter=True, size=1, layer=None, density_norm='width', order=None, multi_panel=False, ncols=None, xlabel='', ylabel=None, rotation=None, show=None, ax=None, save=None, scale=density_norm, **kwds)[source]#
Violin plot.
Wraps
seaborn.violinplot()forAnnData.- Parameters:
- adata
AnnData Annotated data matrix.
- keys
str|Sequence[str] Keys for accessing variables of
.var_namesor fields of.obs.- groupby
str|None(default:None) The key of the observation grouping to consider.
- log
bool(default:False) Plot on logarithmic axis.
- use_raw
bool|None(default:None) Whether to use
rawattribute ofadata. Defaults toTrueif.rawis present.- stripplot
bool(default:True) Add a stripplot on top of the violin plot. See
stripplot().- jitter
float|bool(default:True) Add jitter to the stripplot (only when stripplot is True) See
stripplot().- size
int(default:1) Size of the jitter points.
- layer
str|None(default:None) Name of the AnnData object layer that wants to be plotted. By default adata.raw.X is plotted. If
use_raw=Falseis set, thenadata.Xis plotted. Iflayeris set to a valid layer name, then the layer is plotted.layertakes precedence overuse_raw.- density_norm
Literal['area','count','width'] (default:'width') The method used to scale the width of each violin. If ‘width’ (the default), each violin will have the same width. If ‘area’, each violin will have the same area. If ‘count’, a violin’s width corresponds to the number of observations.
- order
Sequence[str] |None(default:None) Order in which to show the categories.
- multi_panel
bool(default:False) Display keys in multiple panels also when
groupby is not None.- ncols
int|None(default:None) Number of panels per row. If
None(default), all panels are placed in a single row (the original layout). If set to an integer, panels wrap into a grid with this many columns. Effective in themulti_panel=Truepath (nogroupby) and in the multi-keygroupbypath; ignored when only a single panel would be produced.- xlabel
str(default:'') Label of the x axis. Defaults to
groupbyifrotationisNone, otherwise, no label is shown.- ylabel
str|Sequence[str] |None(default:None) Label of the y axis. If
NoneandgroupbyisNone, defaults to'value'. IfNoneandgroubpyis notNone, defaults tokeys.- rotation
float|None(default:None) Rotation of xtick labels.
- show
bool|None(default:None) Show the plot, do not return axis.
- save
bool|str|None(default:None) If
Trueor astr, save the figure. A string is appended to the default filename. Infer the filetype if ending on {'.pdf','.png','.svg'}. (deprecated in favour ofsc.pl.plot(show=False).figure.savefig()).- ax
Axes|None(default:None) A matplotlib axes object. Only works if plotting a single component.
- **kwds
Are passed to
violinplot().
- adata
- Return type:
- Returns:
A
Axesobject ifaxisNoneelseNone.
Examples
import scanpy as sc sc.settings.preset = sc.Preset.ScanpyV1 adata = sc.datasets.pbmc68k_reduced() sc.pl.violin(adata, keys='S_score')
Plot by category. Rotate x-axis labels so that they do not overlap.
Set order of categories to be plotted or select specific categories to be plotted.
groupby_order = ['CD34+', 'CD19+ B'] sc.pl.violin(adata, keys='S_score', groupby='bulk_labels', rotation=90, order=groupby_order)
Plot multiple keys.
For large datasets consider omitting the overlaid scatter plot.
Wrap multiple keys into a 2-column grid.
See also