gpt4 book ai didi

python - 使用 matplotlib 和 Pandas DataFrame 绘制数据覆盖图

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:53 25 4
gpt4 key购买 nike

我已经在 pandas Data Frame 中创建了时间序列的数据覆盖范围,并希望在 Matplotlib 或 PyQtGraph 中绘制数据覆盖范围。

数据框

DateTime    WD98    WS120   WS125B  WD123   WS125A
31-07-2013 100 99.9 99.9 NaN NaN
31-08-2013 100 100 100 NaN NaN
30-09-2013 100 100 100 NaN NaN
31-10-2013 100 100 100 NaN NaN
30-11-2013 100 100 100 100 100
31-12-2013 100 100 100 100 100
31-01-2014 100 100 100 100 100
28-02-2014 100 100 100 100 100
31-03-2014 100 100 100 100 100
30-04-2014 100 100 100 100 100
31-05-2014 67.1 100 100 67.1 7.7
30-06-2014 NaN NaN 100 0 69.2
31-07-2014 NaN NaN 100 0 100
31-08-2014 NaN NaN 100 0 96.2

我想以下面的方式绘制(断条图)

Data Coverage Done in Excel Conditional Formatting

上图是使用 Excel 条件格式完成的。请帮助我。

DataCoverage >= 90 (Green)
DataCoverage >= 75 and DataCoverage < 90 (Yellow)
DataCoverage < 75 (red)

最佳答案

你可以使用seaborn.heatmap :

import seaborn as sns

df = df.set_index(df.pop('DateTime').dt.strftime('%d-%m-%Y'))
g = sns.heatmap(df, cmap=['r','y','g'], annot=True, fmt='.0f')
g.set_yticklabels(g.get_yticklabels(), rotation=0, fontsize=8)

结果:

enter image description here

更新:更正版本:

x = df.set_index(df['DateTime'].dt.strftime('%d-%m-%Y')).drop('DateTime', 1)    
z = pd.cut(x.stack(), bins=[-np.inf, 75, 90, np.inf], labels=[1.,2.,3.]).unstack().apply(pd.to_numeric)
g = sns.heatmap(z, cmap=['r','y','g'], fmt='.0f', cbar=False)
g.set_yticklabels(g.get_yticklabels(), rotation = 0, fontsize = 8)

结果:

enter image description here

关于python - 使用 matplotlib 和 Pandas DataFrame 绘制数据覆盖图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45936264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com