【问题标题】:Stacked barplot with repeated colors by value and fixed length for each bin按值重复颜色的堆叠条形图和每个 bin 的固定长度
【发布时间】:2021-12-23 07:54:45
【问题描述】:

我有一个包含 10 列和三个值 {0,1,2} 的 DataFrame:

row1 = [random.randint(0,2) for i in range(10)]
row2 = [random.randint(0,2) for i in range(10)]
df = pd.DataFrame([{i:row1[i] for i in range(10)}, {i:row2[i] for i in range(10)}])

我想在水平条形图中绘制这些值,其中每个值应该有另一种颜色,但宽度相同。

第一次尝试

df.plot(kind='barh', stacked=True, legend=False)

好的,所以这里每个堆叠值的宽度是不固定的。所以我想到了一个将宽度固定为一个的辅助数据框:

df2 = pd.DataFrame([{i:1 for i in range(10)}, {i:1 for i in range(10)}])

好的,完美,每个堆叠列的宽度相同,但现在我希望颜色为灰色、蓝色或红色,根据 df 中的值

  1. 我该怎么做?
  2. 有没有更好的方法来生成这样的图?
  3. 这样的情节有具体的名称吗?
  4. 是否可以使用色标来代替每个值的固定颜色?
  5. 奖励:有没有办法给每个垃圾箱加框?因此,如果两个 bin(一行中的列)彼此相邻具有相同的值,您仍然可以看到它们是两个独立的数据点吗?

【问题讨论】:

    标签: python pandas matplotlib seaborn


    【解决方案1】:

    我认为您正在搜索 plt.imshowsns.heatmap 而不是堆栈条形图。例如:

    sns.heatmap(df, cmap='tab10', linewidths=1, linecolor='w')
    

    给予:

    【讨论】:

    • 谢谢,有没有办法让它看起来像条形图?
    • 也许设置linewidths=0
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2022-09-24
    • 2021-01-12
    • 2021-02-25
    • 1970-01-01
    • 2011-02-06
    相关资源
    最近更新 更多