Python 基于数据更改图表列颜色

Python 基于数据更改图表列颜色,python,matplotlib,Python,Matplotlib,我有一个python脚本,它解析csv文件并从中创建一个混合图表 如果当前进度比上一个进度下降了5倍以上,我想将CurrentProg条的颜色更改为红色。有可能这样做吗 例如,下表是我正在解析的csv文件的示例。我希望Derick和Lisa的CurrentProg条为红色,如下图所示 名称OldProg PrevProg CurrentProg目标 德里克45 60 52 90 珍娜56878990 丽莎78 93 76 90 哈里98 84 79 90 下面是一段代码,用于解析csv文件并将其

我有一个python脚本,它解析csv文件并从中创建一个混合图表

如果当前进度比上一个进度下降了5倍以上,我想将CurrentProg条的颜色更改为红色。有可能这样做吗

例如,下表是我正在解析的csv文件的示例。我希望Derick和Lisa的CurrentProg条为红色,如下图所示

名称OldProg PrevProg CurrentProg目标 德里克45 60 52 90 珍娜56878990 丽莎78 93 76 90 哈里98 84 79 90

下面是一段代码,用于解析csv文件并将其放入图表的条形图/线条中

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv("file.csv")
names = df['name'].values
x = np.arange(len(names))*2
w = 0.40
plt.bar(x-w, df['Old Progress'].values, width=w*0.7, label='OldProg', color = "cyan")
plt.bar(x, df['Previous Progress'].values, width=w*0.7, label='PrevProg', color = "green")
plt.bar(x+w, df['Current Progress'].values, width=w*0.7, label='CurrentProg', color = "blue")
plt.plot(x, df['Goal'].values, lw=2, label='Goal', color = "red")
如果我需要进一步澄清,请告诉我。谢谢。

plt.bar可以接受与条形图中项目数长度相同的颜色列表,而不仅仅是单一颜色

因此,可以计算条形图中每个元素的颜色,并将其作为颜色参数传递

像这样的东西会起作用:

df=pd.read_csv'test.csv' 进度差异=df['CurrentProg']-df['PrevProg'] 颜色=[“红色”表示d<-5,其他“灰色”表示d正在进行中\u差异] ... plt.barx+w,df['CurrentProg']值,宽度=w*0.7, label='CurrentProg',color=colors