首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plotly:如何在Dash Plotly中绘制时间序列

Plotly:如何在Dash Plotly中绘制时间序列
EN

Stack Overflow用户
提问于 2020-11-14 06:24:03
回答 1查看 1.7K关注 0票数 2

我找了好几天也没找到答案。如何在Dash Plotly中将时间序列数据绘制为带有可选线条的线形图?

我的数据(熊猫数据帧)描述了不同国家的GDP。索引为国家/地区,列为年份。

我没有找到将数据传递到Dash Plotly线形图的解决方案。我的x和y值是多少?

代码语言:javascript
复制
fig = px.line(df, x=?, y=?)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-15 03:18:59

从外观上看,示例中的解决方案应该是:

代码语言:javascript
复制
fig = px.line(df, x=df.index, y = df.columns)

图1-按数据集中显示的列绘制

在这里,如果您想在图例中显示国家/地区,并且有时间在x轴上,只需将df = df.T添加到mix中即可:

图2-转置数据帧以显示x轴上的时间

详细信息

在绘制time series with plotly.时,有很多种可能性,您的示例显示了一个宽格式的数据集。在最新版本中,plotly可以直接优雅地处理long and wide format的两个数据集。如果您需要plotly中详细的详细信息,您还可以仔细查看here

下面的代码片段使用了上面描述的方法,但是为了让它以完全相同的方式为您工作,必须将您的国家设置为dataframe行索引。但是你已经声明他们是,所以试一试,让我知道它是如何为你工作的。还有一件事:您可以通过单击绘图图例中的年份来自由选择要显示的轨迹。通过遵循What About Dash? here一节中的步骤,也可以在Dash中直接实现由下面的代码片段生成的图形。

完整代码:

代码语言:javascript
复制
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio

import plotly.io as pio

# sample dataframe of a wide format
np.random.seed(5); cols = ['Canada', 'France', 'Germany']
X = np.random.randn(6,len(cols))  
df=pd.DataFrame(X, columns=cols)
df.iloc[0]=0;df=df.cumsum()
df['Year'] =  pd.date_range('2020', freq='Y', periods=len(df)).year.astype(str)
df = df.T
df.columns = df.iloc[-1]
df = df.head(-1)
df.index.name = 'Country'

# Want time on the x-axis? ###
# just include:
# df = df.T
##############################

# plotly
fig = px.line(df, x=df.index, y = df.columns)
fig.update_layout(template="plotly_dark")
fig.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64828801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档