как построить временную метку (миллисекунды) в matplotlib - PullRequest
0 голосов
/ 08 марта 2019

У меня есть текстовый файл с данными следующим образом:

0   0:00:01.192000
1   0:00:00.977000
2   0:00:00.955000
3   0:00:00.959000
4   0:00:00.948000
5   0:00:00.934000

И код Python как:

import matplotlib.pyplot as plt

with open('TR.txt') as f:
lines = f.readlines()

y = [line.split()[0] for line in lines]
x = [line.split()[1] for line in lines]

fig = plt.figure(figsize=(15,10))
ax1 = fig.add_subplot(111)
ax1.set_title("SMP graph")
ax1.set_xlabel('hour')
ax1.set_ylabel('smp')
ax1.bar(x,y, width=0.7)

fig1=plt.gcf()
plt.show()
plt.draw()

Но код выдает ошибку из-за плавающей в миллисекундах.

Примечание. Я хотел бы нарисовать график в виде столбца 0 на оси x и столбца 1 на оси Y.

Пожалуйста, примите любые предложения.

1 Ответ

0 голосов
/ 08 марта 2019

Я могу предложить вам следующее решение с использованием панд:

Прочитайте данные, обратите внимание, что разделитель имеет два пробела.

lines = pd.read_csv('TR.txt', sep="  ", header=None, engine='python')

Дайте имена столбцов данных. Столбец_1 - это ваш столбец времени.

lines.columns = ['column_0', 'column_1']

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

lines['column_1'] = lines['column_1'].str[6:].astype('float')

Тогда вы граф:

lines.plot(x='column_0')

Что выглядит так:

enter image description here

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