Как сделать сюжеты со словарными данными? - PullRequest
0 голосов
/ 21 января 2019

Я строю данные на основе словаря.Мой шаблон данных выглядит следующим образом:

'idsrc': {'iddest': [timestamp, data, timestamp, data, timestamp, data, timestamp, data, timestamp, data]

Я хочу построить данные на основе метки времени для каждой iddest.

import matplotlib.pyplot as plt

plots= {'02141592cc0000000600000000000000':{'02141592cc0000000300000000000000': [1548086652, 0, 1548086653, 0, 1548086654, 0, 1548086655, 0, 1548086662, 0],
                                          '02141592cc0000000400000000000000': [1548086693, 0, 1548086694, 0, 1548086694, 0, 1548086695, 0, 1548086697, 0]}}

plt.figure(figsize=[10, 30])
plt.suptitle('title')
plt.subplots_adjust(hspace=0.8)
nsources = len(plots.keys())
print(nsources)
for key, val in plots.items():
    plt.title('Source : {}'.format(key), fontsize=9)
    plt.subplot(nsources, 1, val(0))
    plt.xlabel('Timestamp')
    plt.ylabel('title')
    for key, val in plots[key].items():
        plt.plot(val, range(1, len(val) + 1), marker='o', label=key)
        plt.legend(title='Destination', loc='right', prop={'size': 5})
        plt.show()

    plt.subplot(nsources, 1, val(0))
TypeError: 'dict' object is not callable

1 Ответ

0 голосов
/ 21 января 2019

val (0) вызывал ошибку, я просто добавил счетчик, чтобы отслеживать графики и добавить топор.чтобы управлять ими.

plt.figure(figsize=[7, 5])
plt.suptitle('title')
plt.subplots_adjust(hspace=0.8)
nsources = len(plots.keys())
print(nsources)

cPlot=1

for key, val in plots.items():

    plt.title('Source : {}'.format(key), fontsize=9)
    plt.subplot(nsources, 1, cPlot)
    plt.xlabel('Timestamp')
    plt.ylabel('title')

    ax=plt.gca()

    for key, val in plots[key].items():

        ax.plot(val, range(1, len(val) + 1), marker='o', label=key)
        ax.legend(title='Destination', loc='right', prop={'size': 5})

    cPlot=cPlot+1

когда я копирую словарь несколько раз, я получаю следующее enter image description here

надеюсь, что это поможет

edit

Я исправляю предупреждение и некоторые незначительные изменения, однако для 1 графика осей не будет в списке, поэтому возникнет ошибка, надеюсь, это поможет

nsources = len(plots.keys())
print(nsources)

fig,axes=plt.subplots(nrows=nsources, ncols=1, figsize=(7, 7))
plt.suptitle('title')
plt.subplots_adjust(hspace=0.8)

cPlot=1

for key, val in plots.items():

    axes[cPlot-1].set_title('Source : {}'.format(key), fontsize=9)
    axes[cPlot-1].set_xlabel('Timestamp')
    axes[cPlot-1].set_ylabel('title')

    for key, val in plots[key].items():

        axes[cPlot-1].plot(val, range(1, len(val) + 1), marker='o', label=key)
        axes[cPlot-1].legend(title='Destination', loc='right', prop={'size': 5})

    cPlot=cPlot+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...