绘制各种时间序列,并逐步获取可用数据,而不是一次全部绘制

时间:2019-07-16 06:38:10

标签: python matplotlib plot

假设您有三个具有相同时间步长的时间序列,将它们称为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_poscurr_neg可以删除,只要我们有更好的叠加图的方法。 [通过叠加,我的意思是:这些图不是在x轴上绘制的,而是在当前最上面的(对于+ ve的图)和当前最下面的(对于-ve的图)图。]

0 个答案:

没有答案