Некогерентное поведение гистограммы Matplotlib при использовании параметров дна и высотыPython

Программы на Python
Ответить
Anonymous
 Некогерентное поведение гистограммы Matplotlib при использовании параметров дна и высоты

Сообщение Anonymous »

Я пытаюсь построить гистограмму, на которой для каждого дня, используемого в качестве оси X, мы видим активность между различными периодами времени в виде полосы, идущей от времени начала активности до момента ее окончания. деятельность. Таким образом, ось Y идет от 0 до 24, и, например, я мог бы иметь столбец с 1:00 до 2:00 и второй столбец с 15:00 до 17:00.
Я использовал гистограмму matplotlib и использовал параметры дна и высоты, чтобы это работало, и в определенной степени это работает. Когда у меня очень мало данных, все отображается правильно, но когда у меня десятки действий, данные почему-то становятся неверными.
Код следующий (взято из Power BI и я' Я никогда не использовал Pandas, поэтому просто преобразовал прямо в массив Python)

Код: Выделить всё

import os, uuid, matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot
import pandas
import datetime
import matplotlib.ticker
import matplotlib.dates
import numpy

dataset = pandas.read_csv('input_df_3a3333a0-fd5d-4630-8707-5fc23cb0b326.csv')

matplotlib.pyplot.figure(figsize=(5.55555555555556,4.16666666666667), dpi=72)

test_date_time = dataset.to_numpy().tolist()
test_date_time = list(filter(lambda x: type(x[0]) is not float, test_date_time))
test_date_time = [(datetime.datetime.fromisoformat(x[0]), datetime.datetime.fromisoformat(x[1])) for x in test_date_time]
test_date_time = sorted(test_date_time, key=lambda x:x[0])

values = {"days": [], "bottom": [], "height": []}

# ### KIND OF WORKING
for (test_start, test_end) in test_date_time:
values["days"].append(test_start.date())
values["bottom"].append(test_start.time().hour + (test_start.time().minute / 60) + (test_start.time().second / 3600))
values["height"].append((test_end - test_start).total_seconds() / 3600)
matplotlib.pyplot.bar(x=values["days"], height=values["height"], bottom=values["bottom"])

matplotlib.pyplot.show()

Я проверил словарь значений, и он мне кажется довольно хорошим. Но когда я рисую это, я часто получаю значения, намного превышающие 24, как, например, здесь:
[img]https://i. sstatic.net/GPMUIgcQ.png[/img]

Проблема в том, что если я проверю через отладчик, последнее значение высоты для 4 апреля составляет 1,44 часа, а нижнее значение равно 19.01 часов, поэтому у меня должна быть полоса с 19.01 по 20.45 и все, а это совсем не то, что я получаю.
Я просмотрел гистограмму временной шкалы, используя Python и matplotlib, но Мне просто интересно, почему это происходит? Пример данных можно найти здесь https://filebin.net/rivcvi6d9v92sywk

Подробнее здесь: https://stackoverflow.com/questions/793 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»