假设您有三个具有相同时间步长的时间序列,将它们称为A, B, C
。我们必须将它们全部绘制为line plots
,但是我们在代码中获取数据的顺序是A[0], B[0], C[0], A[1], B[1], C[1],....
。
我总是可以从中得到一个数据帧并在以后绘制它,但问题是时间序列的数量不确定,我想为特定类型的时间序列使用自定义linestyle
,这只有在我能够在获得数据点时将其绘制出来。
以下代码澄清了问题:
for x in xs:
# plot title: 'x'
for t in time:
curr_neg = curr_pos=0 # store the topmost and bottommost values to be plotted to generate stacked plots
if x in dem: # dem is a list
load = LS[x][t] # LS is a dataframe
curr_neg+=(-load)
# pick initial color, plot load -ve, label: 'LOAD'
for st in _get_from_x(x): # I don't know how many items will be in _get_from_x(x), but I want to plot them as dashed.
out = float(attr['A'][st.name][t]) # attr is a dataframe
curr_neg+=(-out)
inp = float(attr['B'][st.name][t])
curr_pos+= inp
# next color, style as dashed
# plot out -ve, label: 'To 'st''
# plot inp +ve, label: 'From 'st''
if x in exp_xs:
e_exp = attr['C'][x][t]
curr_neg += (-e_exp)
# next color
# plot e_exp -ve, label: 'Exp'
if x in imp_xs:
e_imp = attr['D'][x][t]
curr_pos += e_imp
# next color
# plot e_imp +ve, label: 'Imp'
# more timeseries generated below, skipped for readability of code
在逐步获取它们的数据点时,如何绘制这些不同的时间序列?该解决方案应确保内部循环的每次运行所使用的颜色顺序必须相同,以便每个line plot
始终具有一致的颜色。如果需要的话,curr_pos
和curr_neg
可以删除,只要我们有更好的叠加图的方法。 [通过叠加,我的意思是:这些图不是在x轴上绘制的,而是在当前最上面的(对于+ ve的图)和当前最下面的(对于-ve的图)图。]