Python Plotly:如何向Plotly express地物添加水平滚动条?

Python Plotly:如何向Plotly express地物添加水平滚动条?,python,plotly,Python,Plotly,我开始了解plotly和pandas的更多信息,我希望使用plotly.express功能绘制和交互多变量时间序列。我还希望将我的绘图设置为水平滚动条,以便初始绘图在预先指定的初始时间间隔内进行。以下是我的示例,包括三个时间序列和10万个时间点: import plotly.express as px import numpy as np import pandas as pd np.random.seed(123) e = np.random.randn(100000,3) df=pd.

我开始了解plotly和pandas的更多信息,我希望使用plotly.express功能绘制和交互多变量时间序列。我还希望将我的绘图设置为水平滚动条,以便初始绘图在预先指定的初始时间间隔内进行。以下是我的示例,包括三个时间序列和10万个时间点:

import plotly.express as px
import numpy as np
import pandas as pd

np.random.seed(123)
e = np.random.randn(100000,3)  
df=pd.DataFrame(e, columns=['a','b','c'])

df['x'] = df.index
df_melt = pd.melt(df, id_vars="x", value_vars=df.columns[:-1])
fig=px.line(df_melt, x="x", y="value",color="variable")
fig.show()

(就我的最终目的而言,时间序列将更大——在900K+的时间点中可能有40到70个时间序列。)

这将创建一个图形,我可以使用plotly.express功能(如缩放、平移、矩形选择等)与之交互

有没有一种方法可以增加它,使初始绘图仅显示前500个时间点,并且滚动条允许我调查随着时间的增加会发生什么


在空闲状态下使用Mac OS 10.15.4和Python 3.7。我希望在空闲的环境中创建它,而不是在Jupyter笔记本环境中

最简单的方法是将以下内容添加到设置中:

fig.update_layout(xaxis=dict(rangeslider=dict(visible=True),
                             type="linear"))
您将得到:

这将使您能够子集和平移原始地物:

完整代码:

import plotly.express as px
import numpy as np
import pandas as pd

np.random.seed(123)
e = np.random.randn(100000,3)  
df=pd.DataFrame(e, columns=['a','b','c'])

df['x'] = df.index
df_melt = pd.melt(df, id_vars="x", value_vars=df.columns[:-1])
fig=px.line(df_melt, x="x", y="value",color="variable")

# Add range slider
fig.update_layout(xaxis=dict(rangeslider=dict(visible=True),
                             type="linear")
)

fig.show()
使用
plotly.graphing_对象
脱机使用
plotly
您也可以使用
plotly.graphing_对象
,如下所示

引用下面的例子

导入plotly.graph\u对象
作为pd进口熊猫
#加载数据
df=pd.read\u csv(
"https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv")
df.columns=[col.replace(“AAPL.”,“”)表示df.columns中的列]
#塑造形象
图=go.Figure()
图1添加_轨迹(
go.Scatter(x=列表(df.Date),y=列表(df.High)))
#定名
图1.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1(
title_text=“带范围滑块和选择器的时间序列”
)
#添加范围滑块
图1.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1(
xaxis=dict(
范围选择器=dict(
按钮=列表([
dict(计数=1,
label=“1m”,
步骤=“月份”,
stepmode=“后退”),
dict(计数=6,
label=“6m”,
步骤=“月份”,
stepmode=“后退”),
dict(计数=1,
label=“YTD”,
步骤=“年”,
stepmode=“todate”),
dict(计数=1,
label=“1y”,
步骤=“年”,
stepmode=“后退”),
dict(step=“all”)
])
),
范围滑块=dict(
可见=真
),
type=“日期”
)
)
图2(图3)

应用plotly express的功能时,无需使用在线API。Plotly express和Plotly_graphobjects只是有一些不同的用例。你可以很好地将两者的用法组合在一个图中。也许我当时弄错了。我认为plotly.express需要api访问。我将稍后再查看并更新该语句。谢谢,没问题!也许可以先看一看。您会发现最重要的一点是,express可以很好地处理长数据,而graphobjects可以更好地处理宽格式的数据,其中列中有唯一的值类别。事实上,我昨天在我的答案中写了一小段关于这一点的话,我必须说我真的很喜欢你的答案。直到我看到这一点,我才知道dict展平的概念。@vestland这里是另一块宝石:。非常好——非常感谢。对于我自己的系列,时间点的数量非常大(~900K),通常有40-70个系列。我假设在我的web浏览器中创建图形所需的时间实际上只是我的机器的一个功能,除了减少采样/抽取外,我无法加快该过程?@hfshbacp很乐意提供帮助!你能把我的建议看作是公认的答案吗?关于时间和速度,请考虑单独提出一个问题。我非常希望看到一个关于我自己的答案。有没有办法设置滑块的初始宽度?默认情况下,它覆盖整个绘图,我只能找到一种方法来使用按钮设置面向日期的绘图的宽度。。