我希望创建一个线图,显示每年开花和结果时间(物候期)的变化。对于每个物候期,我想绘制平均日期,如果可能的话,将每年的最小值和最大值显示为误差条。我已经在一些数据框架中过滤掉了我需要的所有数据,并以合理的方式对其进行了分组,但我无法弄清楚如何将其全部绘制出来。这是我所在位置的屏幕抓取:Imgur
我发现添加误差条的所有例子都是基于公式或其他等量的上/下,但在我的情况下,max / min会有所不同,所以我不知道如何整合它。可能只是创建每列的数据列表并将其输入到绘图中?我现在正在玩那个,但没有走远。
此外,如果有人提出更好的方式来提供这些数据的一般性建议,我会全神贯注。我已经研究过甘特图,但是并没有与它们相提并论,因为这似乎只是使用matplotlib更直接。如果有人认为这会有所帮助,我很乐意把一些演示数据或笔记本的其余部分放好。
编辑:以下是我的笔记本中的一些示例数据和代码:Gist
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
%matplotlib inline
pd.set_option('display.max_columns', 40)
tick_spacing = 1
dfClean = df[['Site_Cluster', 'Species', 'Phenophase_Name',
'Phenophase_Status', 'Observation_Year', 'Day_of_Year']]
dfClean = dfClean[dfClean.Phenophase_Status == 1]
PhenoNames = ['Open flowers', 'Ripe fruits']
dfLakes = dfClean[(dfClean.Phenophase_Name.isin(PhenoNames))
& (dfClean.Site_Cluster == 'Lakes')
& (dfClean.Species == 'lapponica')]
dfLakesGrouped = dfLakes.groupby(['Observation_Year', 'Phenophase_Name'])
dfLakesReady = dfLakesGrouped.Day_of_Year.agg([np.min, np.mean, np.max]).round(0)
dfLakesReady = dfLakesReady.unstack()
print(dfLakesReady['mean'].plot())