有df:

import random
import pandas as pd
def get_row():
    row = {"date" : random.choice(range(10)), "status" : random.choice(["won", "lost", "onoing"]), "id" : random.choice(range(10))}
    return row
df = pd.DataFrame([get_row() for i in range(100)])
tab  = df.pivot_table(index="date", columns="status", values="id", aggfunc="count")
tab


这给了我:
python -  Pandas 图:按值固定颜色-LMLPHP

我可以尝试绘制:

tab.plot.bar(stacked=True)


python -  Pandas 图:按值固定颜色-LMLPHP

如何为每列固定颜色?
我希望“丢失”为红色,“获胜”为绿色,“进行中”为蓝色。

好吧,我找到了答案:

gcolors = {'lost': 'red', 'onoing': 'blue', 'won': 'green'}
tab.plot.bar(stacked=True, color=[gcolors[group] for group in tab])


给出:
python -  Pandas 图:按值固定颜色-LMLPHP

最佳答案

好吧,正如我所说,在问问题时,我找到了答案:

gcolors = {'lost': 'red', 'onoing': 'blue', 'won': 'green'}
tab.plot.bar(stacked=True, color=[gcolors[group] for group in tab])

07-27 18:18