首页 > 解决方案 > Seaborn Violinplot 改变色调的顺序

问题描述

我正在尝试绘制分裂小提琴以在色调变量中进行比较。绘图本身工作正常,但我希望改变色调变量的顺序(即“真”位于分割的左侧而不是右侧)。一个小的工作示例是这样的:

import pandas as pd
import seaborn as sns
df = pd.DataFrame({'my_bool': pd.Series(np.random.choice([True,False],20),dtype='bool'),
                'value': pd.Series(np.random.choice(200,20),dtype='int'),
                'my_group': np.random.choice(['A','B'],20)})
sns.violinplot(x='my_group',data=df,y='value',hue='my_bool',split=True, palette = {True:'blue', False:'red'})

这是输出的样子:

我想要实现的是在每个拆分的右侧有 False 条目,左侧有 True 条目。有没有办法做到这一点?

标签: pythonpandasseaborn

解决方案


您需要设置hue_order

import pandas as pd
import seaborn as sns
import numpy as np

df = pd.DataFrame({'my_bool': pd.Series(np.random.choice([True,False],20),dtype='bool'),
                'value': pd.Series(np.random.choice(200,20),dtype='int'),
                'my_group': np.random.choice(['A','B'],20)})
sns.violinplot(x='my_group',data=df,y='value',hue='my_bool', hue_order= [True, False], split=True, palette = {True:'blue', False:'red'})

推荐阅读