python - 如何使用 seaborn 或 plotly 绘制时间序列图?
问题描述
我有一个时间序列数据如下:
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
并且数据框data
的形状为 (14880, 2)。在该Menge
列中,只有 11807 个值可用,其余为nan
我试图将其绘制如下:
data.plot()
plt.show()
这给了我
但我想使用seaborn
或绘制相同的图plotly
因为seaborn
我尝试过:
x = data.Datum
y = data.Menge.values
sns.lineplot(x = x, y = y, data = data)
它给我的输出为:
Out[3]: <matplotlib.axes._subplots.AxesSubplot at 0x21286bb8668>
并打开一个新的图形窗口,但它说Figure 1 (Not Responding)
所以,我有两个问题:
- 在上图中,我们可以看到 x 轴有索引,但我希望它是
Datum
那里的值。如何改变? - 我想在 seaborn 或 plotly 中实现这一点,那么有没有办法实现这一切?
解决方案
考虑一个玩具数据框:
- 海运解决方案
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()
- 解决方案
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)
推荐阅读
- databricks - 如何读取增量表的一些分区?
- serverless-framework - 在解析模式 20210326 下使用无服务器框架从固定区域解析秘密
- postgresql - 等待容器在测试容器中启动,使用 GenericContainer 自定义 PostgreSQL 映像
- python - 安装python包到conda虚拟环境,Jupyter Notebook中的ModuleNotFoundError
- javascript - 无论如何移动位置:固定元素,相对于滚动上的另一个元素?
- javascript - xhr.js:177 POST http://localhost5000/net::ERR_NAME_NOT_RESOLVED / Uncaught (in promise) 错误:网络错误
- python - 在为推荐系统创建矩阵时如何处理非常大的数据集?
- python - 如何在 python 中使用线程,以便它会改变 i 在循环中的值,该值在函数中的类之外
- visual-studio-code - 向 ipython 终端发送代码时出现 VSCode 缩进错误
- linux - 如何使用带有多个分隔符的 IFS?