2016-02-02 184 views
3

Seaborn有条件的颜色我有一个Seaborn情节(在这种情况下箱线图,这里是一个简化版本基于价值

sns.boxplot(x="Question", y="Score", hue="Item", data=scores[scores['Item']=='34x'], palette="PRGn") 

的数据看起来像这样...

Item Question Score Section Event Evaluator 
    34x  Mar1  4  Maritime Boat 6 
    34x  Mar2  3  Maritime Boat 6 
    34x  Multi1  3  Multinet Boat 6 
    34x  Multi2  3  Multinet Boat 6 
    34x  Noise1  4  Noise  Boat 6 

的情节呈现很好,但我想根据他们的平均分给每个问题的盒子图绘制颜色(即低于1的任何东西是红色,+ 1-2.5黄色,+2.5绿色)。我尝试了一些没有好结果的东西任何帮助完成这个将不胜感激。

回答

0

可以使用的颜色自定义字典作为箱线图调色板参数,它可以是一个名字,一个有序列表,或字典。

我产生一个数据帧类似你们

Item Question  Score 
0  A  Mar1 2.935605 
1  A  Mar1 2.754065 
2  A  Mar1 3.339259 
3  A  Mar1 1.229478 
4  A  Mar1 3.248582 
5  A  Mar2 0.409028 
6  A  Mar2 1.779707 

从DF可以生成定制的颜色调色板:

custom_palette = {} 
for q in set(scores.Question): 
    avr = (np.average(scores[scores.Question == q].Score)) 
    if avr < 1: 
     custom_palette[q] = 'r' 
    elif avr < 2.5: 
     custom_palette[q] = 'y' 
    else: 
     custom_palette[q] = 'g' 

并用它来影响你对箱线图:

sns.boxplot(x="Question", y="Score", data=scores, palette=custom_palette,showmeans=True) 

enter image description here

+1

不要只是粘贴一个链接到另一个职位,走开。试着在这里展示一个替代方案来回答OP。 –