временные метки в миллисекундах сюжет с matplotlib - PullRequest
0 голосов
/ 03 февраля 2020

Здравствуйте, я пытаюсь измерить некоторые вызовы RP C, сделанные с RabbitMQ, для отслеживания времени от:

  • RP C начинается с источника (t1)
  • Входит вызов брокер (t2)
  • время, когда потребитель начинает вычислять запрашиваемую вещь (t3)
  • время, когда заканчивается вычисление (t4)
  • ответ потребителя -> Producer (t5)

Для метки времени в брокере я использовал RabbitMQ Метка времени

Так что метки времени, которые я получил для случайного вызова RP C Вот эти

    "t1": 1580674842.503887,
    "t2": 1580674842511,
    "t3": 1580674842.511811,
    "t4": 1580674843.513187,
    "t5": 1580674843.520756

Теперь я хотел бы построить каждый период времени другим цветом. Например, t1-t2 blue, t2-t3 red и др. c. Проблема в том, что я не могу сделать их различимыми. Я попытался с простым графиком и графиком рассеяния, но временные периоды слишком малы. Есть идеи?

node = [1, 1, 1, 1, 1]
times = [t1, t2, t3, t4, t5]
plt.plot(times, node, color='r')
plt.scatter(times, node, color='b')
plt.show()

enter image description here

1 Ответ

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

Это можно сделать, разделив данные на 2 диапазона, потому что один из данных намного больше остальных.

from matplotlib import pyplot as plt


data = {"t1": 1580674842.503887, "t2": 1580674842511, "t3": 1580674842.511811, "t4": 1580674843.513187, "t5": 1580674843.520756}

# plot data
fig, ax = plt.subplots(nrows=1, ncols=2)
fig.subplots_adjust(wspace=0)
times = [data.get('t1'), data.get('t3'), data.get('t4'), data.get('t5'), data.get('t2')]
colors = ['red', 'green', 'orange', 'yellow']
ax[0].scatter(times[0:-1], [0, 0, 0, 0], color=colors)
ax[1].scatter(times[-1], [0])
ax[1].set_yticklabels([])
ax[0].set_ylim(-1, 1)
ax[1].set_ylim(-1, 1)
ax[1].axhline(y=0, linestyle='--', color='lightgrey')
ax[0].axhline(y=0, linestyle='--', color='lightgrey')
plt.show()

Вывод:

enter image description here

...