【发布时间】: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 中的值
- 我该怎么做?
- 有没有更好的方法来生成这样的图?
- 这样的情节有具体的名称吗?
- 是否可以使用色标来代替每个值的固定颜色?
- 奖励:有没有办法给每个垃圾箱加框?因此,如果两个 bin(一行中的列)彼此相邻具有相同的值,您仍然可以看到它们是两个独立的数据点吗?
【问题讨论】:
标签: python pandas matplotlib seaborn