如何为小提琴图添加颜色?

How to add colors to violinplots?

我正在用我拥有的数据准备小提琴图。

我想做的是在小提琴情节中为我的情节赋予独特的颜色,如彩虹色图。 我有一些 运行 完全相同的颜色,但我想引入一些变化。

vp1 = violinplot(y1, x1, points=20, widths=0.9, showmeans=True, showextrema=False, showmedians=False)
for pc in vp1['bodies']:
    pc.set_facecolor('red')
    pc.set_edgecolor('black')
vp1['cmeans'].set_color('black')

我该怎么做?

import random
def randomColor():
  r = lambda: random.randint(0,255)
  color = '#{:02x}{:02x}{:02x}'.format(r(), r(), r())
  return color    

vp1 = violinplot(y1, x1, points=20, widths=0.9, showmeans=True, showextrema=False, showmedians=False)
    for pc in vp1['bodies']:
        pc.set_facecolor(randomColor())
        pc.set_edgecolor('black')
    vp1['cmeans'].set_color('black')

如果你有 100 列,你可以使用它。函数 randomColor() 生成随机 hex 值并在每次迭代时给出随机颜色。

您可以使用颜色列表:

vp1 = violinplot(y1, x1, points=20, widths=0.9, showmeans=True, showextrema=False, showmedians=False)
colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violat"]
len_colors = len(colors)
i = 0
for pc in vp1['bodies']:
    pc.set_facecolor(colors[i])
    pc.set_edgecolor('black')
    i += 1
    if i == len_colors:
        i = 0
vp1['cmeans'].set_color('black')

解释:

i = 0colors 的索引设置为 0,并且在每次使用一种颜色后,将变量递增 1,以便下一个颜色将是列表中的下一个颜色。

如果 i 增加到等于 colors 的长度,请将其值设置回 0


如果希望每种颜色完全随机且不同,可以使用random() method from the built-in random模块:

from random import random

# Your code
vp1 = violinplot(y1, x1, points=20, widths=0.9, showmeans=True, showextrema=False, showmedians=False)
for pc in vp1['bodies']:
    pc.set_facecolor((random(), random(), random()))
    pc.set_edgecolor('black')
vp1['cmeans'].set_color('black')