【问题标题】:How to add colors to violinplots?如何为小提琴情节添加颜色?
【发布时间】:2021-04-21 02:17:56
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

    标签: python matplotlib colors colormap


    【解决方案1】:

    您可以使用颜色列表:

    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 模块中的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')
    

    【讨论】:

    • 这太棒了!但是,如果我有 100 列数据,并且我希望它们具有不同的颜色,我该怎么做?
    【解决方案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 值,并在每次迭代时给出一个随机颜色。

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 1970-01-01
      • 2014-06-27
      • 2020-12-19
      • 2015-03-22
      • 1970-01-01
      • 2018-05-15
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多