statsmodels.graphics.boxplots.beanplot
-
statsmodels.graphics.boxplots.beanplot(data, ax=None, labels=None, positions=None, side='both', jitter=False, plot_opts={})
[source] -
Make a bean plot of each dataset in the
data
sequence.A bean plot is a combination of a
violinplot
(kernel density estimate of the probability density function per point) with a line-scatter plot of all individual data points.Parameters: data : sequence of ndarrays
Data arrays, one array per value in
positions
.ax : Matplotlib AxesSubplot instance, optional
If given, this subplot is used to plot in instead of a new figure being created.
labels : list of str, optional
Tick labels for the horizontal axis. If not given, integers
1..len(data)
are used.positions : array_like, optional
Position array, used as the horizontal axis of the plot. If not given, spacing of the violins will be equidistant.
side : {?both?, ?left?, ?right?}, optional
How to plot the violin. Default is ?both?. The ?left?, ?right? options can be used to create asymmetric violin plots.
jitter : bool, optional
If True, jitter markers within violin instead of plotting regular lines around the center. This can be useful if the data is very dense.
plot_opts : dict, optional
A dictionary with plotting options. All the options for
violinplot
can be specified, they will simply be passed toviolinplot
. Options specific tobeanplot
are:-
-
?violin_width? : float. Relative width of violins. Max available
-
space is 1, default is 0.8.
-
-
- ?bean_color?, MPL color. Color of bean plot lines. Default is ?k?.
-
Also used for jitter marker edge color if
jitter
is True.
-
- ?bean_size?, scalar. Line length as a fraction of maximum length.
-
Default is 0.5.
- ?bean_lw?, scalar. Linewidth, default is 0.5.
- ?bean_show_mean?, bool. If True (default), show mean as a line.
-
- ?bean_show_median?, bool. If True (default), show median as a
-
marker.
- ?bean_mean_color?, MPL color. Color of mean line. Default is ?b?.
- ?bean_mean_lw?, scalar. Linewidth of mean line, default is 2.
-
- ?bean_mean_size?, scalar. Line length as a fraction of maximum length.
-
Default is 0.5.
-
- ?bean_median_color?, MPL color. Color of median marker. Default
-
is ?r?.
- ?bean_median_marker?, MPL marker. Marker type, default is ?+?.
-
-
?jitter_marker?, MPL marker. Marker type for jitter=True.
-
Default is ?o?.
-
- ?jitter_marker_size?, int. Marker size. Default is 4.
- ?jitter_fc?, MPL color. Jitter marker face color. Default is None.
- ?bean_legend_text?, str. If given, add a legend with given text.
Returns: fig : Matplotlib figure instance
If
ax
is None, the created figure. Otherwise the figure to whichax
is connected.See also
-
violinplot
- Violin plot, also used internally in
beanplot
. -
matplotlib.pyplot.boxplot
- Standard boxplot.
References
P. Kampstra, ?Beanplot: A Boxplot Alternative for Visual Comparison of Distributions?, J. Stat. Soft., Vol. 28, pp. 1-9, 2008.
Examples
We use the American National Election Survey 1996 dataset, which has Party Identification of respondents as independent variable and (among other data) age as dependent variable.
12345>>> data
=
sm.datasets.anes96.load_pandas()
>>> party_ID
=
np.arange(
7
)
>>> labels
=
[
"Strong Democrat"
,
"Weak Democrat"
,
"Independent-Democrat"
,
...
"Independent-Indpendent"
,
"Independent-Republican"
,
...
"Weak Republican"
,
"Strong Republican"
]
Group age by party ID, and create a violin plot with it:
1234567891011>>> plt.rcParams[
'figure.subplot.bottom'
]
=
0.23
# keep labels visible
>>> age
=
[data.exog[
'age'
][data.endog
=
=
id
]
for
id
in
party_ID]
>>> fig
=
plt.figure()
>>> ax
=
fig.add_subplot(
111
)
>>> sm.graphics.beanplot(age, ax
=
ax, labels
=
labels,
... plot_opts
=
{
'cutoff_val'
:
5
,
'cutoff_type'
:
'abs'
,
...
'label_fontsize'
:
'small'
,
...
'label_rotation'
:
30
})
>>> ax.set_xlabel(
"Party identification of respondent."
)
>>> ax.set_ylabel(
"Age"
)
>>> plt.show()
(Source code, png, hires.png, pdf)
-
Please login to continue.