Я хочу преобразовать объект Python в граф MatPlotLib. Объект python поступает через файл pickle.
Когда печатается имя файла pickle - 'tstpickelFile' (содержащее данные для преобразования), это вывод -
[
OrderedDict([('_time', '2019-11-05T14:39:00.000-08:00'), ('count', '711'), ('_span', '60')]),
OrderedDict([('_time', '2019-11-05T14:40:00.000-08:00'), ('count', '2823'), ('_span', '60')]),
OrderedDict([('_time', '2019-11-05T14:41:00.000-08:00'), ('count', '2731'), ('_span', '60')]),
OrderedDict([('_time', '2019-11-05T14:42:00.000-08:00'), ('count', '2752'), ('_span', '60')]),
OrderedDict([('_time', '2019-11-05T14:42:00.000-08:00'), ('count', '655'), ('_span', '60')])
OrderedDict([('_time', '2019-11-05T14:42:00.000-08:00'), ('count', '1233'), ('_span', '60')])
]
import csv
import numpy as np
import pickle
from collections import Counter
from matplotlib import pyplot as plt
plt.style.use("fivethirtyeight")
infile = open('tstpickelFile','rb')
new_dict = pickle.load(infile)
# print(new_dict)
infile.close()
time = []
count = []
top5 = itertools.islice(new_dict, 5)
for eachDict in top5:
for key, value in eachDict.items():
if(key=="_time"):
time.append(value)
if(key=="count"):
count.append(value)
plt.plot(time, count)
plt.title('Time Count graph')
plt.xlabel('Time')
plt.ylabel('count')
plt.legend()
plt.show()
В настоящее время есть несколько проблем -
Ось X показывает только 711, 2823, 2731, 2752, 2581. Я хочу, чтобы ось X показала 0,100, 200, 300, 400 (постоянные интервалы). Таким образом, линейный график не будет прямой линией (как сейчас). Скорее это будет волнистая линия.
Время должно быть в формате ЧЧ: ММ AM / PM с указанием даты только один раз. Поскольку tstpickelFile может содержать более 50 записей, формат «2019-11-05T14: 39: 00.000-08: 00» займет всю диаграмму.
Это текущий результат - https://imgur.com/DgG0j9U
Вот пример изображения того, как я хотел бы график - https://imgur.com/muczoUb