J'ai le même dataframe, df, que j'ai stylisé et créé un graphique linéaire dans Plotly. J'ai inclus une fonction d'animation, mais le graphique semble donner une erreur.

   Size     Date        POD
   0.027289 11/1/2020   S 
   0.013563 11/1/2020   S 
   0.058498 11/1/2020   S 
   0.281953 11/1/2020   S 
   0.479725 11/1/2020   S 
   0.007358 11/1/2020   S 
   0.075818 11/1/2020   S 
   0.069744 11/1/2020   S 
   0.029844 11/1/2020   S 
   0.38383  11/1/2020   S 
   0.3451   11/1/2020   S 
   0.034024 11/1/2020   S 
   0.292939 11/1/2020   S 
   0.208562 11/1/2020   S 
   0.013108 11/1/2020   S 

Voilà ce que je fais

 import plotly.express as px
 import plotly.graph_objects as go


 fig = px.scatter(df1, x = "Date", y = "Size", color = "POD",title = "POD Growth in US", 
 animation_frame="Date",
 log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90],labels = {"Size": "Size in TB"})

 fig.update_layout(
 font_family="Arial",
 font_color="black",
 title_font_family="Arial",
 title_font_color="black",
 legend_title_font_color="black"
  )


fig.update_xaxes(title_font_family="Arial")

fig.update_layout(
title={
    'text': "POD Growth in US",
    'y':0.9,
    'x':0.5,
    'xanchor': 'center',
    'yanchor': 'top'})

 fig.update_traces(marker=dict(size=8,
    line=dict(width=1,
    color='DarkSlateGrey')),
    selector=dict(mode='markers'))

fig.show()

Je pense que le problème réside dans cette ligne de code ici, mais je ne suis pas sûr à 100% de ce que je fais mal :

 animation_frame="Date",
 log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90]

L'erreur que j'obtiens:

  Invalid value of type 'pandas._libs.tslibs.timestamps.Timestamp' received for the 'name' property 
  of frame
  Received value: Timestamp('2020-09-01 00:00:00
  The 'name' property is a string and must be specified as:
  - A string
  - A number that will be converted to a string

Dois-je effectuer une conversion dans la colonne "Date" pour résoudre le problème ?

Voici le graphique que je souhaite animer :

enter image description here

2
Lynn 5 nov. 2020 à 01:43

1 réponse

Meilleure réponse

Je ne sais pas si votre animation chandelier se déroulera comme prévu, mais changer la colonne Date de votre DataFrame d'un horodatage en une chaîne (à l'aide de la bibliothèque datetime) devrait résoudre l'erreur.

import datetime as dt

df1['Date'] = df1['Date'].map(lambda x: x.strftime('%m/%d/%Y'))
1
Derek O 5 nov. 2020 à 09:59