【问题标题】:Set legend in seaborn after pandas apply大熊猫申请后在seaborn中设置传奇
【发布时间】:2020-12-01 00:13:34
【问题描述】:

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

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

plt.show()

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

【问题讨论】:

  • 你能举个df_train的例子吗?

标签: python pandas seaborn legend


【解决方案1】:

您可以循环访问创建的组,而不是使用apply。 (可以直接调用kdeplot而不是distplot不带直方图,这样更容易提供额外的参数。)

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2016-07-22
    • 2015-07-11
    • 2015-12-21
    • 2014-08-05
    • 1970-01-01
    相关资源
    最近更新 更多