【问题标题】: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=,则相同的标签将应用于两个图。如何告诉他根据二进制特征的值显示标签?
【问题讨论】:
标签:
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()