#python #python-3.x #matplotlib #powerbi #powerbi-custom-visuals
#python #python-3.x #matplotlib #powerbi #powerbi-пользовательские визуальные эффекты
Вопрос:
Я пытаюсь создать карту рассеяния, используя Python visual, поскольку эта функция отсутствует в готовом виде для данных даты или времени. R не вариант, поскольку невозможно просмотреть эти визуальные элементы в веб-службе. Набор визуальных элементов, доступных на marketplace, не дает ожидаемого результата.
Я впервые пытаюсь создать визуальный элемент Python и первый визуальный элемент со значениями времени.
Я прочитал документацию Power BI по Python. Я прочитал документацию по Pandas и Matplotlib.
Но я не могу понять, почему моя графика отображает 00:00 по оси y. Итак, я пришел к вопросу о своих данных.
Мои данные изначально были сгенерированы в Excel, а затем импортированы в Power BI. Вот пример :
Day_of_the_week,Time
Monday,1899-12-30 08:15:00
Monday,1899-12-30 14:15:00
Tuesday,1899-12-30 16:15:00
Wednesday,1899-12-30 08:15:00
Thursday,1899-12-30 11:30:00
Thursday,1899-12-30 14:15:00
Thursday,1899-12-30 16:15:00
Friday,1899-12-30 11:30:00
Код Python для визуального :
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
plt.scatter(dataset.Day_of_the_week,dataset.Time)
date_format = mdates.DateFormatter('%H:%M')
plt.gca().yaxis.set_major_formatter(date_format)
plt.show()
Любой намек на то, что я делаю неправильно?
Комментарии:
1. что вы хотите для каждой оси?
2. Часы по оси y и день недели по оси x
Ответ №1:
Ваш Time
столбец не был распознан как объект datetime. Вы можете преобразовать столбец в datetime следующим образом:
dataset.Time = pd.to_datetime(dataset.Time, format='%Y-%m-%d %H:%M:%S')
полный код:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
from io import StringIO
d='''Day_of_the_week,Time
Monday,1899-12-30 08:15:00
Monday,1899-12-30 14:15:00
Tuesday,1899-12-30 16:15:00
Wednesday,1899-12-30 08:15:00
Thursday,1899-12-30 11:30:00
Thursday,1899-12-30 14:15:00
Thursday,1899-12-30 16:15:00
Friday,1899-12-30 11:30:00'''
dataset = pd.read_csv(StringIO(d), header=0)
dataset.Time = pd.to_datetime(dataset.Time, format='%Y-%m-%d %H:%M:%S')
plt.figure()
plt.scatter(dataset.Day_of_the_week,dataset.Time)
date_format = mdates.DateFormatter('%H:%M')
plt.gca().yaxis.set_major_formatter(date_format)
plt.tight_layout()
plt.show()