【问题标题】:Use same color for all grouped bars in Seaborn barplot对 Seaborn 条形图中的所有分组条使用相同的颜色
【发布时间】:2018-11-26 17:36:31
【问题描述】:

以下代码为与分组变量y 关联的每个“色调”值生成一个带有不同颜色条的条形图:

from matplotlib import pyplot as plt
import seaborn as sns

ax = sns.barplot(x=[3, 7, 12, 10], y=list("AABB"), hue=list("XYXY"))
plt.show()

我想更改颜色,以使属于同一分组值的所有条都具有相同的颜色。也就是说,y == "A" 的前两个条应该是橙色的,y == "B" 的最后两个条应该是蓝色的。

我已经尝试了`sns.barplot() 的palette 参数。但是,除非我遗漏了什么,否则我可以指定每个色调级别的颜色,但不能单独指定分组变量的值。

我还查看了this related question 的答案,它询问了关于sns.boxplot() 创建的盒须图的类似问题。接受的答案建议使用轴的 artists 属性访问表示条形的矩形。但是,sns.barplot() 似乎不像sns.boxplot() 那样使用artistsax.artists 似乎总是一个空列表:

print(ax.artists)
[]

那么,我必须进行哪些更改才能使顶部的两个条显示为蓝色,底部的两个条显示为橙色?

【问题讨论】:

    标签: matplotlib bar-chart seaborn


    【解决方案1】:

    这些条不在artists 中,而是在patches 中。所以你可以遍历ax.patches 并根据自己的喜好设置颜色。

    from matplotlib import pyplot as plt
    import seaborn as sns
    
    ax = sns.barplot(x=[3, 7, 12, 10], y=list("AABB"), hue=list("XYXY"))
    for i, bar in enumerate(ax.patches):
        bar.set_color("C{}".format(i%2))
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 1970-01-01
      • 2023-03-29
      • 2022-01-27
      • 1970-01-01
      • 2021-02-06
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多