statsmodels.graphics.boxplots.beanplot¶
-
statsmodels.graphics.boxplots.beanplot(data, ax=
None, labels=None, positions=None, side='both', jitter=False, plot_opts={})[source]¶ 每个数据集在序列中的豆图。
豆图是 小提琴图(每个点的概率密度函数的核密度估计)与所有单个数据点的线散点图的组合。
- Parameters:¶
- datasequence[array_like]
数据数组,每个位置对应一个数组。
- ax
AxesSubplot 如果指定,此子图将用于绘图,而不是创建新图形。
- labels
list[str],optional 水平轴的刻度标签。如果没有给出,则使用整数
1..len(data)。- positionsarray_like,
optional 位置数组,用作图形的横轴。如果没有给出,小提琴图的间距将是等距的。
- side{‘both’, ‘left’, ‘right’},
optional 如何绘制小提琴图。默认是‘both’。可以使用‘left’、‘right’选项来创建非对称的小提琴图。
- jitterbool,
optional 如果为真,则在琴形图内抖动标记,而不是在中心周围绘制常规线条。如果数据非常密集,这可能会很有用。
- plot_opts
dict,optional 一个包含绘图选项的字典。所有适用于violinplot的选项都可以指定,它们将直接传递给violinplot。特定于beanplot的选项包括:
- ‘violin_width’float. Relative width of violins. Max available
space 是 1,默认是 0.8。
- ‘bean_color’, MPL color. Color of bean plot lines. Default is ‘k’.
也用于抖动标记边缘颜色,如果抖动为True。
- ‘bean_size’, scalar. Line length as a fraction of maximum length.
默认值为0.5。
‘bean_lw’,标量。线宽,默认值为0.5。
‘bean_show_mean’,布尔值。如果为True(默认),显示均值为一条线。
- ‘bean_show_median’, bool. If True (default), show median as a
标记。
‘bean_mean_color’, MPL 颜色。 均值线的颜色。 默认是 ‘b’。
‘bean_mean_lw’,标量。 均值线的线宽,默认值为2。
- ‘bean_mean_size’, scalar. Line length as a fraction of maximum length.
默认值为0.5。
- ‘bean_median_color’, MPL color. Color of median marker. Default
是‘r’。
‘bean_median_marker’, MPL 标记。标记类型,默认是 ‘+’。
- ‘jitter_marker’, MPL marker. Marker type for
jitter=True. 默认是‘o’。
- ‘jitter_marker’, MPL marker. Marker type for
‘jitter_marker_size’, int. 标记大小。默认值是4。
‘jitter_fc’, MPL 颜色。抖动标记面颜色。默认值为 None。
‘bean_legend_text’, 字符串。如果提供,则添加带有指定文本的图例。
- Returns:¶
Figure如果 ax 为 None,则创建图形。否则为 ax 连接的图形。
另请参阅
violinplot小提琴图,也在beanplot内部使用。
matplotlib.pyplot.boxplot标准箱线图。
参考文献
P. Kampstra, “Beanplot: 一种用于分布可视化比较的箱线图替代方法”, J. Stat. Soft., 第28卷, 第1-9页, 2008年.
示例
我们使用了1996年美国国家选举调查数据集,其中受访者的党派认同作为自变量,以及其他数据(包括年龄)作为因变量。
>>> 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"]按党派ID分组年龄,并创建一个小提琴图:
>>> 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()