Después de consultar especialistas en este tema, programadores de varias ramas y profesores hemos dado con la solución al problema y la plasmamos en este post.
Solución:
Considerando un marco de datos de juguete:
- solución marina
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()
- solución gráfica
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)
Las configuraciones más limpias para datos de formato amplio, incluso para varias series temporales, son:
-
tramamente:
go.Figure()
-
nacido en el mar:
lineplot()
tramamente:
fig = go.Figure([
'x': df.index,
'y': df[col],
'name': col
for col in df.columns])
nacido en el mar:
sns.lineplot(data = df)
Código completo para seaborn y plotly:
El siguiente ejemplo de código le permitirá producir ambos gráficos en un Jupyter Notebook fuera de línea.
importar plotly.graph_objs a partir de fecha y hora importar fecha y hora importar plotly.express como px importar matplotlib como mpl importar seaborn como sns importar pandas como pd importar numpy como np
datos de muestra en un marco de datos de 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)
tramamente
fig = go.Figure([
'x': df.index,
'y': df[col],
'name': col
for col in df.columns])
fig.show()
nacido en el mar
sns.set_style("darkgrid")
sns.lineplot(data = df)
Puntuaciones y comentarios
Tienes la posibilidad comunicar este enunciado si te fue útil.