#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()