Ошибка при выводе данных datetime с помощью matplotlib

#python-3.x #matplotlib #plot #python-datetime

#python-3.x #matplotlib #график #python-datetime

Вопрос:

Я пытаюсь с помощью matplotlib построить кривую на основе данных от датчиков, состоящих из даты (ГГГГ-ММ-ДД ЧЧ: ММ: СС) и числа с плавающей точкой. Я искал информацию о том, как отображать значения datetime, и я могу их отобразить, но полученная мной цифра неверна:

Кривая, отображаемая с помощью Excel

Кривая, отображаемая с помощью matplotlib

Вот мой код для отображения такого рисунка (этот скрипт является частью надстройки FreeCAD):

 dates = matplotlib.dates.date2num(xData)
plt.plot_date(dates,yData)
plt.show()
  

xData и yData — это списки значений, извлеченных из файла DATA.txt: https://wetransfer.com/downloads/04fd9842a0beb0fd0e06666908b2562720200825135406/87b28f .

Любой совет был бы оценен! Спасибо

Комментарии:

1. Обязательно преобразуйте даты в datetime, а значения с плавающей точкой — в float. Строки обрабатываются как категориальные

2. Спасибо вам за ваш комментарий. На самом деле значения, которые я вывел на графике, были строками, а не плавающими на самом деле.

Ответ №1:

сначала необходимо импортировать pandas и matplot

 import pandas as pd
import matplotlib.pyplot as plt
  

затем вы должны открыть данные с помощью pandas
пример pd.read_csv("anything.csv")

Комментарии:

1. Да, я правильно импортирую другую библиотеку (я использую библиотеку csv для данных csv). Я проверил, что у меня есть в xData и yData, и значения верны.

Ответ №2:

Я использую текстовый редактор, чтобы заменить разделитель на , подобный

 0.13934599999999955,2020-07-12 15:31:11
0.1562399999999998,2020-07-12 15:24:07
0.20419800000000032,2020-07-12 15:16:52
0.0922520000000004,2020-07-12 15:02:33
0.19564400000000023,2020-07-12 14:55:30
0.14740400000000045,2020-07-12 14:48:15
  

Программа запускается:

 import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("DATA.txt")

df.columns = ['Value', 'Date']
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:%S')

plt.plot(df['Date'], df['Value'])

plt.show()
  

введите описание изображения здесь

Вы можете использовать средства форматирования даты для изменения формата xlabel. Вы можете проверить код формата с помощью strftime.org.

 import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

df = pd.read_csv("DATA.txt")

df.columns = ['Value', 'Date']
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:%S')

plt.plot(df['Date'], df['Value'])

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y'))

plt.show()
  

введите описание изображения здесь