Недопустимое значение типа 'datetime.date' получено для свойства 'name' фрейма и Полученное значение: datetime.date(2022, 8, 15)

Я пытаюсь построить анимированный график рассеяния с помощью plotly. Использую кадр анимации по дате, но получаю ошибку Invalid value of type 'datetime.date'.

fig = px.scatter(df1,x=df1['MeterReading_DateTime'], y=df1['ACT_IMP_TOT'], color=df1['MeterReading_DateTime'],animation_group=df1['MeterReading_DateTime'],animation_frame=df1['MeterReading_DateTime'],size=df1['ACT_IMP_TOT'],size_max=55,title='')

Здесь я предоставляю кадр данных. dataframe

  • ошибка именно та, о которой говорится.... для color, animation_group и animation_frame дата должна быть выражена как строка
  • смоделировать данные, подразумеваемые вашим кодом и изображением данных
  • создал дополнительный столбец, чтобы иметь возможность использовать код по своему усмотрению
  • исправил несколько других проблем, чтобы оси менялись при переключении между кадрами
import plotly.express as px
import pandas as pd
import numpy as np

df1 = pd.DataFrame(
    {"MeterReading_DateTime": pd.date_range("15-aug-2022", "today", freq="D")}
).assign(ACT_IMP_TOT=lambda d: np.random.uniform(9, 15, len(d)))
# column uses for color / animation needs to be a string
df1["ReadingDate_str"] = df1["MeterReading_DateTime"].dt.strftime("%Y-%m-%d")

# use data as str for color and animation
fig = px.scatter(
    df1,
    x=df1["MeterReading_DateTime"],
    y=df1["ACT_IMP_TOT"],
    color=df1["ReadingDate_str"],
    animation_group=df1["ReadingDate_str"],
    animation_frame=df1["ReadingDate_str"],
    size=df1["ACT_IMP_TOT"],
    size_max=55,
    title="",
)

# need to define xaxis for each frame
for fr in fig.frames:
    fr.update(
        layout={
            "xaxis": {
                "range": [fr.data[0].x[0], fr.data[0].x[0]],
                "tickformat": "%d-%b",
            }
        }
    )

# yaxis needs to be approriate range across all frames
fig.update_layout(
    yaxis_range=[df1["ACT_IMP_TOT"].min(), df1["ACT_IMP_TOT"].max()],
    xaxis_tickformat="%d-%b",
    showlegend=False,
)
Вернуться на верх