gpt4 book ai didi

pandas - 使用 seaborn 绘图时如何为色调参数指定多个变量?

转载 作者:行者123 更新时间:2023-12-04 13:16:05 25 4
gpt4 key购买 nike

使用seaborn时,有没有办法可以为hue参数包含多个变量(列)?问这个问题的另一种方法是如何在将数据绘制在单个 x、y 轴图上之前按多个变量对数据进行分组?

我想做类似下面的事情。但是目前我无法为 Hue 参数指定两个变量。:

sns.relplot(x='#', y='Attack', hue=['Legendary', 'Stage'], data=df)

例如,假设我有一个如下所示的 Pandas DataFrame 包含一个 Pokemon database通过 this 获得教程。

enter image description here

我想在 x 轴上绘制 pokedex #,在 y 轴上绘制 Attack。但是,我希望数据按舞台和传奇进行分组。使用 matplotlib,我编写了一个自定义函数,该函数按 ['Legendary','Stage'] 对数据框进行分组,然后遍历每个组进行绘图(请参见下面的结果)。虽然我的自定义函数按预期工作,但我希望这可以通过 seaborn 来实现。我猜肯定还有其他人试图使用 seaborn 在单个图中可视化 3 个以上的变量?
fig, ax = plt.subplots()
grouping_variables = ['Stage','Legendary']
group_1 = df.groupby(grouping_variables)
for group_1_label, group_1_df in group_1:
ax.scatter(group_1_df['#'], group_1_df['Attack'], label=group_1_label)
ax_legend = ax.legend(title=grouping_variables)

enter image description here

编辑1:

注意:在我提供的示例中,我按两个变量(例如:Legendary 和 Stage)对数据进行了分组。但是,其他情况可能需要任意数量的变量(例如:5 个变量)。

最佳答案

使用 seaborn.relplot 的色调,考虑将所需的组连接到一个列中,然后在新变量上运行绘图:

def run_plot(df, flds):
# CREATE NEW COLUMN OF CONCATENATED VALUES
df['_'.join(flds)] = pd.Series(df.reindex(flds, axis='columns')
.astype('str')
.values.tolist()
).str.join('_')

# PLOT WITH hue
sns.relplot(x='#', y='Attack', hue='_'.join(flds), data=random_df, aspect=1.5)
plt.show()

plt.clf()
plt.close()

用随机数据演示

数据
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns

### DATA
np.random.seed(22320)
random_df = pd.DataFrame({'#': np.arange(1,501),
'Name': np.random.choice(['Bulbasaur', 'Ivysaur', 'Venusaur',
'Charmander', 'Charmeleon'], 500),
'HP': np.random.randint(1, 100, 500),
'Attack': np.random.randint(1, 100, 500),
'Defense': np.random.randint(1, 100, 500),
'Sp. Atk': np.random.randint(1, 100, 500),
'Sp. Def': np.random.randint(1, 100, 500),
'Speed': np.random.randint(1, 100, 500),
'Stage': np.random.randint(1, 3, 500),
'Legend': np.random.choice([True, False], 500)
})

地块
run_plot(random_df, ['Legend', 'Stage'])

Two Group Plot Output
run_plot(random_df, ['Legend', 'Stage', 'Name'])

Three Group Plot

关于pandas - 使用 seaborn 绘图时如何为色调参数指定多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60366379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com