Ger*_*Ger 5 python matplotlib seaborn violin-plot
查阅有关seaborn的violon 图的文档,我想知道如何在同一轴上绘制两个系列的小提琴图(点1),并且它们是可比较的(点2)。
关于第1点,我想复制每种性别的情节:
fig, ax = plt.subplots()
sns.violinplot(x="day", y="total_bill", hue="smoker",
data=tips, split=True, ax=ax)
Run Code Online (Sandbox Code Playgroud)
我可以在两个子图上做到这一点:
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(211)
sns.violinplot(x="day", y="total_bill", hue="smoker",
data=tips[tips.sex == "Female"], split=True, ax=ax)
ax = fig.add_subplot(212)
sns.violinplot(x="day", y="total_bill", hue="smoker",
data=tips[tips.sex == "Male"], split=True, ax=ax)
Run Code Online (Sandbox Code Playgroud)
我想在相同的matplotlib轴上绘制两个小提琴图系列。
另一点是关于小提琴图的宽度。我不清楚小提琴是否已标准化以及如何标准化?我假设宽度是为每个图计算的。在上面的示例中,为第一个子图计算了女性的宽度,为第二个子图计算了男性的宽度。因此,我可以直接比较密度吗?我想我可以比较这些形状,但是,例如,我不能比较星期一的男性吸烟者和女性的吸烟者数量?有没有办法管理小提琴的标准化?
对于您的第一点,在Seaborn中无法做到这一点。请查看我的评论以获取可能的解决方法,但总之,我认为花费的时间并不值得。
对于您的第二个问题,scale和scale_hue参数用于violinplot控制小提琴贴片的标准化/缩放方式:
比例尺:{“区域”,“计数”,“宽度”},可选
用于缩放每个小提琴宽度的方法。如果是面积,则每个小提琴将具有相同的面积。如果计数,则小提琴的宽度将根据该仓中的观察次数来缩放。如果宽,则每个小提琴的宽度都相同。
scale_hue:bool,可选
当使用色相变量嵌套小提琴时,此参数确定缩放比例是在主要分组变量的每个级别内(scale_hue = True)还是在图上的所有小提琴上计算(scale_hue = False)。
默认值为'area'和False。您可以在下面看到这些参数的变化如何影响小提琴。例如,如果要在图之间进行比较并如实表示绝对计数,可以设置scale='count'和scale_hue=False。请注意,小提琴仍将按比例缩放到图中的最大数量(而不是数据集中),因此在我们的案例中,女性最大的小提琴将代表〜40个观测值,而男性最大的小提琴将代表〜25个观测值。
fig, axes = plt.subplots(4, 2, figsize=(10, 16), sharey='row')
axes_cols = (axes.flatten()[::2], axes.flatten()[1::2])
for (sex_name, sex), axes_col in zip(tips.groupby('sex'), axes_cols):
sns.countplot(x="day", hue="smoker", data=sex, ax=axes_col[0])
for scale, ax in zip(['area', 'count', 'width'], axes_col[1:]):
sns.violinplot(x="day", y="total_bill", hue="smoker",
data=sex, split=True, ax=ax, scale=scale)
ax.set_title('scale = {}'.format(scale), y=0.95)
sns.despine()
fig.tight_layout()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6530 次 |
| 最近记录: |