我有一些 csv 数据。
它只有一列和包含足球比分的内容字符串,例如“0:0”、“1:2”等。
然后我使用 df[0].value_counts().plot(kind='bar') 构建直方图。
仅更改具有“平局”得分(0:0、1:1...)的条形颜色的最佳方法是什么?
我可以添加第二列,其中“1”用于绘制,“0”用于其他,但不明白如何将其用作条形颜色。
我在这里尝试了另一个问题的解决方案
df[0].value_counts().plot(kind='bar', color=(df[1] == 1).map({True: '橙色', False: '蓝色'} ))
但着色错误
wrong coloring ,期待橙色“1:1”
示例数据框:
0 1
0 2:0 0
1 2:3 0
2 1:1 1
3 1:3 0
4 2:0 0
5 3:4 0
6 1:2 0
7 0:1 0
8 2:3 0
9 0:1 0
10 1:1 1
11 2:1 0
12 0:1 0
13 1:2 0
14 0:3 0
最佳答案
使用numpy.where
用于测试是否将 1
列与 Index.isin
匹配对于传递给 color
参数的颜色数组:
a = df[0].value_counts()
colors = np.where(a.index.isin(df.loc[df[1] == 1, 0].unique()), 'orange', 'blue')
a.plot(kind='bar', color=colors)
关于Python Pandas 条形图 - 更改特定条形的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076638/