我正在pandas使用matplotlib. 我有一个绘图策略,我将归零到初始值,然后将每个选定的变量偏移一个设定值。例如,这是我目前的绘图方法:
fig, ax = plt.subplots()
# data is in a dataframe called inputData
timeseries_plots=['var1','var3','var8']
offsetFactor = 20
for ii,var in enumerate(timeseries_plots)
offsetRef = inputData[var].loc[~inputData[var].isnull()].iloc[0]
ax.plot(inputData[TimeIndex], offsetFactor*(len(timeseries_plots_avg)-ii-1)+inputData[timeseries_plots_avg[ii]]-offsetRef, label=var,markersize=1,marker='None',linestyle = 'solid',color=colour)
plt.show()
这产生了这样的东西(有一些matplotlib技巧):
如您所见,它删除了offsetRef(在本例中为变量的初始值),然后offsetFactor向每个变量添加一个常量(在本例中等于 20)。结果是开始垂直偏移 20 的行。
但是,当值开始随时间漂移并且一个变量可能与另一个变量交叉时,这可能会成为一个问题。我想做的是重置垂直偏移量 - 例如通过在特定日期之后更改 offsetRef。
我试图通过以下方式做到这一点。我首先初始化一个等于变量大小的数组。offsetRef然后我用在 处重新计算的值填充它resetDates。我已经包含了注释,这些注释标记了#PSEUDOCODE我大致写下我想做的事情的地方——但提前道歉,因为它们非常粗糙。先感谢您!
fig, ax = plt.subplots()
inputData = pd.DataFrame(np.random.randint(100, size=(100, 5)), columns=['timestamp','var2','var3','var4','var5'])
inputData['timestamp'][:]=pd.date_range('2020-may-01','2020-aug-08')
timeseries_plots=['var1','var3','var4']
offsetFactor = 20
resetDates = ['2020-jun-23','2020-jul-05']
for ii,var in enumerate(timeseries_plots)
offsetRef = np.zeros(inputData[var].size)
for tt,ttdate in enumerate(resetDates):
if tt=0:
#PSEUDO CODE: offsetRef[ inputData['timestamp'] <resetDates[tt]] = inputData[var].loc[~inputData[var].isnull()].iloc[0]
#PSEUDO CODE: offsetRef[ inputData['timestamp'] >=resetDates[tt]] = inputData[var].loc[~inputData[var].isnull()].iloc[ttdate]
#PSEUDO CODE: offsetRef[ inputData['timestamp'] >=resetDates[tt]] = inputData[var].loc[~inputData[var].isnull()].iloc[ttdate]
ax.plot(inputData[TimeIndex], offsetFactor*(len(timeseries_plots_avg)-ii-1)+inputData[timeseries_plots_avg[ii]]-offsetRef, label=var,markersize=1,marker='None',linestyle = 'solid',color=colour)
plt.show()
当年话下
相关分类