Python >> Tutoriel Python >  >> Python Tag >> Seaborn

Comment tracer un graphique de série chronologique en utilisant seaborn ou plotly ?

Considérant une trame de données jouet :

  • solution marine
import pandas as pd
import matplotlib.pyplot as plt

import seaborn as sns

df = pd.DataFrame({"Datum": ['1/1/2018 0:00',
                             '1/1/2018 0:15',
                             '1/1/2018 0:30',
                             '1/1/2018 0:45',
                             '1/1/2018 1:00',
                             '1/1/2018 1:15',
                             '1/1/2018 1:30',
                             '1/1/2018 1:45 '],
                   "Menge": [19.5, 19.,19.5,19.5,21,19.5,20,23]})
sns.lineplot(x="Datum", y="Menge", data=df)
plt.xticks(rotation=15)
plt.title('seaborn-matplotlib example')
plt.show()

  • solution d'intrigue
import pandas as pd
import numpy as np

import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)

trace1 = go.Scatter(x=df.Datum,
                    y=df.Menge,
                    name = "plotly example",
                    line = dict(color = 'blue'),
                    opacity = 0.4)

layout = dict(title='plotly example',)

fig = dict(data=[trace1], layout=layout)
iplot(fig)


Les configurations les plus propres pour les données d'un format large, même pour plusieurs séries temporelles, sont :

  • tracé :go.Figure()

  • marin :lineplot()

intrigue :

fig = go.Figure([{
    'x': df.index,
    'y': df[col],
    'name': col
}  for col in df.columns])

Seaborn :

sns.lineplot(data = df)

Code complet pour seaborn et plotly :

L'exemple de code suivant vous permettra de produire les deux tracés dans un Jupyter Notebook hors ligne.

importer plotly.graph_objs comme gofrom datetime importer datetimeimport plotly.express comme pximport matplotlib comme mplimport seaborn comme snimport pandas comme pdimport numpy comme np

exemple de données dans une base de données pandas

np.random.seed(23)
observations = 75
df=pd.DataFrame(dict(A=np.random.uniform(low=-1, high=1.1, size=observations).tolist(),
                    B=np.random.uniform(low=-1, high=1.1, size=observations).tolist(),
                    C=np.random.uniform(low=-1, high=1.1, size=observations).tolist(),
                    ))
df.iloc[0,] = 0
df = df.cumsum()

firstdate = datetime(2020,1,1)
df['date'] = pd.date_range(firstdate, periods=df.shape[0]).tolist()
df.set_index('date', inplace=True)

complot

fig = go.Figure([{
    'x': df.index,
    'y': df[col],
    'name': col
}  for col in df.columns])
fig.show()

né de la mer

sns.set_style("darkgrid")
sns.lineplot(data = df)