Seaborn Violinplot 更改色调顺序

emi*_*laz 4 python pandas seaborn

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

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'})
Run Code Online (Sandbox Code Playgroud)

这是输出的样子:

我想要实现的是在每个拆分的右侧有 False 条目,在左侧有 True 条目。有什么方法可以实现吗?

Fou*_*ier 6

您需要设置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'})
Run Code Online (Sandbox Code Playgroud)

  • 我多次查看了文档,但不知何故没有看到这一点。谢谢你! (3认同)
  • @emilaz `order` 或 `hue_order` 都可以工作并接受任何类型的列表。 (2认同)