基于关闭d更改图表列颜色

2024-06-25 23:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

Name               OldProg               PrevProg               CurrentProg              Goal
Derick                 45                             60                           52                      90
Jenna                 56                             87                           89                      90
Lisa                    78                             93                           76                      90
Harry                  98                             84                           79                      90

enter image description here

下面是一段代码,用于解析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")

如果我需要进一步澄清,请告诉我。多谢各位


Tags: 文件csvimportdfas图表barplt
1条回答
网友
1楼 · 发布于 2024-06-25 23:31:10

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

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

像这样的东西会起作用:

df = pd.read_csv('test.csv')
progress_difference = df['CurrentProg'] - df['PrevProg']
colors = ['Red' if d < -5 else 'Grey' for d in progress_difference]
...
plt.bar(x+w, df['CurrentProg'].values, width=w*0.7, 
        label='CurrentProg', color = colors)

相关问题 更多 >