如何为violinplots添加颜色?

2024-09-26 05:00:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用我掌握的数据准备小提琴图

我想做的是在小提琴的情节中给我的情节赋予一种独特的颜色,就像彩虹的彩色地图一样。 我有一些颜色完全相同的东西,但我想介绍一些变化

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')

我该怎么办


Tags: 数据false颜色地图points彩色blackx1
2条回答
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


如果希望每个颜色完全随机且不同,可以使用内置的^{}模块中的^{}方法:

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')

相关问题 更多 >