在Seaborn中排序分组条形图
我正在尝试弄清楚如何将seaborn的条形图按某个组进行分组,同时保持聚合的类别。比如,
我有一个这样的条形图:
plt.figure(figsize = (12, 7))
sns.barplot(x = 'x', y = 'y', hue = 'df_tag', data = col_df)
另外,我还想按橙色类别的大小对x轴进行排序,但又想保持类别的结构。(也就是说,如果x轴上的2有绿色、蓝色和橙色的条形,我希望这些组保持不变,但按橙色条形的大小从小到大排序)。
非常感谢任何帮助!
相关问题:
- 暂无相关问题
1 个回答
1
要对列进行排序,可以按照以下步骤操作:
- 先筛选出所有带有橙色标签的行
- 然后根据y值进行排序
- 使用排序后列表的索引来查找原始数据表中的对应行
- 最后,提取这个重新排序的数据表中的x值
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame({'x': [1, 2, 2, 3, 3, 3, 4, 4, 5],
'y': [4, 3, 1, 2, 7, 2, 2, 4, -3],
't': [2, 2, 3, 1, 2, 3, 2, 3, 2]})
fig, axs = plt.subplots(ncols=2, figsize=(12, 7))
sns.barplot(x='x', y='y', hue='t', data=df, ax=axs[0])
sns.barplot(x='x', y='y', hue='t', data=df, order=df.iloc[df[df['t'] == 2]['y'].sort_values().index]['x'], ax=axs[1])