Issue
I have a time series data as follows:
Datum Menge
1/1/2018 0:00 19.5
1/1/2018 0:15 19.0
1/1/2018 0:30 19.5
1/1/2018 0:45 19.5
1/1/2018 1:00 21.0
1/1/2018 1:15 19.5
1/1/2018 1:30 20.0
1/1/2018 1:45 23.0
and the dataframe data
has a shape of (14880, 2). In the Menge
column, there are only 11807 values available and the rest are nan
I am trying to plot it as follows:
data.plot()
plt.show()
and this gives me
But I want to plot the same using seaborn
or plotly
for seaborn
I have tried:
x = data.Datum
y = data.Menge.values
sns.lineplot(x = x, y = y, data = data)
and it gives me the output as:
Out[3]: <matplotlib.axes._subplots.AxesSubplot at 0x21286bb8668>
and a new graph window is opened but it says Figure 1 (Not Responding)
So, I have 2 questions:
- In the above graph, we can see the x-axis has index, but I would like it to be the
Datum
values there. How can it be changed? - I would like to achieve this in seaborn or plotly, so is there a way to achieve all this in either?
Solution
Considering a toy dataframe:
- seaborn solution
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()
- plotly solution
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)
Answered By - sentence
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.