python-3.x - Seaborn 中分组箱线图的单独颜色

标签 python-3.x seaborn

我想调整此箱线图的配色方案,以便左侧的组为深蓝色和浅蓝色,右侧的组为深红色和浅红色。我已经在 my_colours 中制作了我想要的颜色,但我仍然不知道该怎么做。这是数据的代码:

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

a1 = list(np.random.normal(.70, .20, 20))
a2 = list(np.random.normal(.5, .15, 20))
b1 = list(np.random.normal(.78, .20, 20))
b2 = list(np.random.normal(.4, .25, 20))



levsA = ['a' for i in range(40)]
levsB = ['b' for i in range(40)]

itemsa = [1 for i in range(20)] + [2 for i in range(20)]
itemsb = [1 for i in range(20)] + [2 for i in range(20)]



df = pd.DataFrame({'cs':a1 + a2 + b1+ b2,
                   'levels':levsA + levsB,
                   'type':itemsa + itemsb})


my_colours = ((0.1216, 0.4667, 0.7059),
              (0.8392, 0.1529, 0.1569),
              (0.6824, 0.7804, 0.9098),
              (1, 0.5961, 0.5882))
sns.set_palette(my_colours)


sns.boxplot(x='type', y='cs', hue='levels', data=df)

enter image description here

我想要按以下顺序排列:

enter image description here

最佳答案

这些框是PathPatches。您可以循环它们并设置它们的颜色。不过,需要注意它们在坐标区中出现的顺序。

import matplotlib.patches
boxes = ax.findobj(matplotlib.patches.PathPatch)
for color, box in zip(my_colours[::2]+my_colours[1::2], boxes):
    box.set_facecolor(color)

enter image description here

关于python-3.x - Seaborn 中分组箱线图的单独颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51899470/

相关文章:

python - 如何使用 Fabric2.x 检查路径是否存在

python - 如何在Python中检查字符串的 "natural"数据类型?

python - Winreg Python、QueryInfoKey 给出的上次更改的日期/时间不正确?

python - 从seaborn图中删除图例标题

python - 在seaborn FacetGrid中的两个线图之间实现

Python 3 : Suspect_ID is not defined

python - 如何在settings.py中获取主机名或IP,以便我可以使用它来决定要使用哪个应用程序的网址

python - plt.tight_layout() 与 sns.clustermap

python - kdeplot seaborn 中的自定义阴影调色板

python - 如何更改 seaborn violinplot 图例标签?