Создать график из словарных данных. Элегантный способ - PullRequest
0 голосов
/ 05 февраля 2020

Здравствуйте, я сгенерировал файл json, который выглядит следующим образом.

{
        "1": {
            "t1": 1580922111616263,
            "t2": 1580922111625000,
            "t3": 1580922111625632,
            "t4": 1580922112126443,
            "t5": 1580922112131123
        },
        "2": {
            "t1": 1580922112632761,
            "t2": 1580922112655000,
            "t3": 1580922112659807,
            "t4": 1580922113161233,
            "t5": 1580922113162554
        },

...............................
        "28": {
            "t1": 1580922139740049,
            "t2": 1580922139764000,
            "t3": 1580922139770782,
            "t4": 1580922140274371,
            "t5": 1580922140288827
        },
        "29": {
            "t1": 1580922140792481,
            "t2": 158092214085900,
            "t3": 1580922140860625,
            "t4": 1580922141363088,
            "t5": 1580922141368971
        }
    }

Я хотел бы создать 4 разных графика. Каждый график представляет период времени.

first plot => time period t1 - t2
second plot => t2-t3
third plot => t3 - t4
fourth plot => t4-t5

Каждый график должен содержать каждый период времени от каждого ключа. Таким образом, каждый сюжет должен иметь 29 строк в толале. Какой самый элегантный способ реализовать это?

import json
import matplotlib.pyplot as plt

with open('/home/test.json', 'r') as outfile:
    file = json.load(outfile)

    plt.figure()
    for k, v in file.items():
        for z, x in v.items():
            if z == 't1':
                t1 = x
            elif z == 't2':
                t2 = x
            elif z == 't3':
                t3 = x
            elif z == 't4':
                t4 = x
            elif z == 't5':
                t5 = x

        xvals = [t2, t1]
        yvals = [k, k]

        plt.plot(xvals, yvals)

plt.show()

1 Ответ

0 голосов
/ 05 февраля 2020

Сохраните ваши данные в переменной data.

Попробуйте код ниже

def get_diff():
    diff_list = {}
    time_list = ['t1','t2','t3','t4','t5']
    for key in data:
        diff_list[key] = []
        for i in range(1,5):
            diff_list[key].append(data[key][time_list[i]]-data[key][time_list[i-1]])
    return pd.DataFrame(diff_list).T

y = get_diff()

plt.plot(y.index,y['0'],'--')
plt.plot(y.index,y['1'],'--')
plt.plot(y.index,y['2'],'--')
plt.plot(y.index,y['3'],'--')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...