首页 > 解决方案 > 大熊猫申请后在seaborn中设置传奇

问题描述

我必须根据二进制变量从数据框中绘制两个分布图:

df_train \
.groupby("Binary")["Continuous"] \
.apply(sb.distplot, hist=False)

plt.show()

如果我在 apply 中传递参数label=,则相同的标签将应用于两个图。我如何告诉他根据二进制特征的值显示标签?

标签: pythonpandasseabornlegend

解决方案


而不是使用apply,您可以遍历创建的组。(代替distplot没有直方图,kdeplot可以直接调用,这样更容易提供额外的参数。)

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

df_train = pd.DataFrame({"Binary": np.repeat(['yes', 'no'], 1000),
                         "Continuous": np.random.uniform(-1, 1, 2000).cumsum()})
groups = df_train.groupby("Binary")["Continuous"]

for label, group in groups:
    sns.kdeplot(group, label=f"Binary: {label}", shade=True)
plt.show()

示例图


推荐阅读