python 海运标签颜色无色相

dm7nw8vv  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(110)

我尝试用seaborn制作一个使用四个数据集的核密度图,使用seaborn,我可以在一个图中绘制四个数据集的核密度估计,这正是我想要的。但是我不知道如何制作标签来告诉你哪个颜色属于哪个数据集(红色:数据集1,绿色:dataset2等)。通常,在为数据集中的列标记颜色时,通过传递hue参数来完成。但由于我在同一个图中使用不同的数据集,我如何为颜色做一个标签呢?
下面是代码和图:

sns.kdeplot(data=group1_df, x="PEAK SPEED")
sns.kdeplot(data=group2_df, x="PEAK SPEED")
sns.kdeplot(data=group3_df, x="PEAK SPEED")
sns.kdeplot(data=group4_df, x="PEAK SPEED")

ih99xse1

ih99xse11#

最简单的方法是给予每个kdeot一个label,以及matplotlib将在图例中使用哪个。

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

np.random.seed(20221221)
group1_df = pd.DataFrame({"PEAK SPEED": np.random.randn(200).cumsum()})
group2_df = pd.DataFrame({"PEAK SPEED": np.random.randn(500).cumsum()})
group3_df = pd.DataFrame({"PEAK SPEED": np.random.randn(700).cumsum()})
group4_df = pd.DataFrame({"PEAK SPEED": np.random.randn(800).cumsum()})

sns.kdeplot(data=group1_df, x="PEAK SPEED", label='group 1')
sns.kdeplot(data=group2_df, x="PEAK SPEED", label='group 2')
sns.kdeplot(data=group3_df, x="PEAK SPEED", label='group 3')
sns.kdeplot(data=group4_df, x="PEAK SPEED", label='group 4')

plt.legend()
plt.show()

或者,您可以创建一个大型 Dataframe ,将四个原始 Dataframe 连接起来。这将启用与hue配合使用的选项,例如使用common_norm(默认值:True)、堆叠曲线(multiple='stack')或特定调色板。

df = pd.concat({'group 1': group1_df, 'group 2': group2_df, 'group 3': group3_df, 'group 4': group4_df})
df = df.reset_index(level=0).reset_index(drop=True).rename(columns={'level_0': 'Group'})

sns.kdeplot(data=df, x="PEAK SPEED", hue='Group', common_norm=False, legend=True)

相关问题