Python >> Tutoriel Python >  >> Python Tag >> Plotly

Comment dessiner un graphique à lignes multiples à l'aide de plotly_express ?

Avec la version 4.8 de Plotly.py, le code de la question d'origine est désormais pris en charge presque sans modification :

pd.options.plotting.backend = "plotly"
df.plot(x='date', y=['sessions', 'cost'])

Réponse précédente, en juillet 2019

Pour cet exemple, vous pouvez préparer les données légèrement différemment.

df_melt = df.melt(id_vars='date', value_vars=['sessions', 'cost'])

Si vous transposez/fondez vos colonnes (sessions, coût) dans des lignes supplémentaires, vous pouvez spécifier la nouvelle colonne "variable" à partitionner dans le paramètre de couleur.

px.line(df_melt, x='date' , y='value' , color='variable')

Exemple de sortie plotly_express


Avec les nouvelles versions de plotly, tout ce dont vous avez besoin est :

df.plot()

Tant que vous vous souvenez de définir le backend de traçage de pandas sur plotly :

pd.options.plotting.backend = "plotly"

À partir de là, vous pouvez facilement ajuster votre tracé à votre guise, par exemple en définissant le thème :

df.plot(template='plotly_dark')

Terrain avec thème sombre :

Une fonctionnalité particulièrement impressionnante avec les nouvelles versions de plotly est que vous n'avez plus à vous soucier de savoir si votre dataframe pandas est d'un format large ou long. Quoi qu'il en soit, tout ce dont vous avez besoin est df.plot() . Découvrez les détails dans l'extrait ci-dessous.

Code complet :

# imports
import plotly.express as px
import pandas as pd
import numpy as np

# settings
pd.options.plotting.backend = "plotly"

# sample dataframe of a wide format
np.random.seed(4); cols = list('abc')
X = np.random.randn(50,len(cols))  
df=pd.DataFrame(X, columns=cols)
df.iloc[0]=0; df=df.cumsum()

# plotly figure
df.plot(template = 'plotly_dark')

Réponse pour les anciennes versions :

Je suggérerais fortement d'utiliser iplot() à la place si vous souhaitez utiliser plotly dans un Jupyter Notebook par exemple :

Tracé :

Code :

import plotly
import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import numpy as np


# setup
init_notebook_mode(connected=True)
np.random.seed(123)
cf.set_config_file(theme='pearl')

# Random data using cufflinks
df1 = cf.datagen.lines()
df2 = cf.datagen.lines()
df3 = cf.datagen.lines()
df = pd.merge(df1, df2, how='left',left_index = True, right_index = True)
df = pd.merge(df, df3, how='left',left_index = True, right_index = True)

fig = df1.iplot(asFigure=True, kind='scatter',xTitle='Dates',yTitle='Returns',title='Returns')
iplot(fig)