使用 plotly 下拉菜单 select 'Time Column' 并根据 selected 时间绘制 'Column 2' 与 'Column 1'
Use a plotly dropdown to select 'Time Column' and plot 'Column 2' vs 'Column 1' respecting the selected Time
晚上好,
我需要知道是否可以在 plotly 库中使用下拉按钮并执行我在标题中提到的操作。
我生成这些数据是为了向您展示我的数据框:
+----------+----------+-----------+
| Time | Column1 | Column2 |
+----------+----------+-----------+
| 06:48:37 | -0,61447 | 0,0050662 |
| 06:48:37 | -0,30723 | 0,0045917 |
| 06:48:37 | 0 | 0,0043276 |
| 06:48:37 | 0,30723 | 0,0041332 |
| 06:48:37 | 0,61447 | 0,003965 |
| 06:48:37 | 0,9217 | 0,0038135 |
| 06:48:37 | 1,2289 | 0,0036676 |
| 06:48:37 | 1,5362 | 0,0035346 |
| 06:48:37 | 1,8434 | 0,0034031 |
| 06:48:37 | 2,1506 | 0,0032813 |
| 06:59:37 | -0,61739 | 0,0058201 |
| 06:59:37 | -0,3087 | 0,0053155 |
| 06:59:37 | 0 | 0,0050203 |
| 06:59:37 | 0,3087 | 0,0047872 |
| 06:59:37 | 0,61739 | 0,0045921 |
| 06:59:37 | 0,92609 | 0,0044152 |
| 06:59:37 | 1,2348 | 0,0042553 |
| 06:59:37 | 1,5435 | 0,004102 |
| 06:59:37 | 1,8522 | 0,0039532 |
| 06:59:37 | 2,1609 | 0,0038114 |
| 07:14:37 | -0,61799 | 0,0069837 |
| 07:14:37 | -0,309 | 0,0064459 |
| 07:14:37 | 0 | 0,0061361 |
| 07:14:37 | 0,309 | 0,0058983 |
| 07:14:37 | 0,61799 | 0,0056855 |
| 07:14:37 | 0,92699 | 0,0054978 |
| 07:14:37 | 1,236 | 0,0053299 |
| 07:14:37 | 1,545 | 0,0051582 |
| 07:14:37 | 1,854 | 0,0049979 |
| 07:14:37 | 2,163 | 0,0048426 |
+----------+----------+-----------+
这里是 link 的主题:https://plotly.com/python/dropdowns/
PS1 :我知道如何创建一个存储一个 'Time' 的数据框(对于这个例子,它将是一个包含 06:49:37 和 06:59:37 和 07:14:37 这样当我点击它时我不会在下拉列表中出现很多次。我不知道你是否可以使用这个想法但我有一个起点。
PS2 : 我已经使用了 plotly 库,但我真的不知道如何开始编码这个问题
你可以试试这个:
from plotly import graph_objs as go
import pandas as pd
data = {'Time':['06:48:37', '06:48:37', '06:48:37',
'06:59:37', '06:59:37', '06:59:37',
'07:14:37', '07:14:37', '07:14:37'],
'Column1':[1, 2, 3, 4, 5, 6,7,8, 9],
'Column2':[1, 2, 1, 2, 1, 2,1, 2, 1],
'Column3':[3, 4, 5, 6, 7, 8,9,10, 11],
'Column4':[1, 2, 1, 2, 1, 2, 1, 2,1]}
df = pd.DataFrame(data)
lst=[]
lst2 = []
for i,time in enumerate(df['Time'].unique()):
lst.append(
go.Scatter(name=time, # convert to str if Time column is not str
x=df.loc[df['Time']==time,'Column1'],
y=df.loc[df['Time']==time,'Column2'],
mode='lines'
)
)
lst.append(
go.Scatter(name=time, # convert to str if Time column is not str
x=df.loc[df['Time']==time,'Column3'],
y=df.loc[df['Time']==time,'Column4'],
mode='lines'
)
)
lst3 = [False]*len(df['Time'].unique()) * 2 # 2 is number of plots per timestamp
lst3[i*2:(i+1)*2]=[True,True]
lst2.append(dict(label=time,
method="update",
args=[{"visible": lst3}]))
plot = go.Figure(data=lst,
layout=dict(updatemenus=[dict(active=0, buttons=lst2)],
showlegend=False)
)
plot.show()
晚上好,
我需要知道是否可以在 plotly 库中使用下拉按钮并执行我在标题中提到的操作。
我生成这些数据是为了向您展示我的数据框:
+----------+----------+-----------+
| Time | Column1 | Column2 |
+----------+----------+-----------+
| 06:48:37 | -0,61447 | 0,0050662 |
| 06:48:37 | -0,30723 | 0,0045917 |
| 06:48:37 | 0 | 0,0043276 |
| 06:48:37 | 0,30723 | 0,0041332 |
| 06:48:37 | 0,61447 | 0,003965 |
| 06:48:37 | 0,9217 | 0,0038135 |
| 06:48:37 | 1,2289 | 0,0036676 |
| 06:48:37 | 1,5362 | 0,0035346 |
| 06:48:37 | 1,8434 | 0,0034031 |
| 06:48:37 | 2,1506 | 0,0032813 |
| 06:59:37 | -0,61739 | 0,0058201 |
| 06:59:37 | -0,3087 | 0,0053155 |
| 06:59:37 | 0 | 0,0050203 |
| 06:59:37 | 0,3087 | 0,0047872 |
| 06:59:37 | 0,61739 | 0,0045921 |
| 06:59:37 | 0,92609 | 0,0044152 |
| 06:59:37 | 1,2348 | 0,0042553 |
| 06:59:37 | 1,5435 | 0,004102 |
| 06:59:37 | 1,8522 | 0,0039532 |
| 06:59:37 | 2,1609 | 0,0038114 |
| 07:14:37 | -0,61799 | 0,0069837 |
| 07:14:37 | -0,309 | 0,0064459 |
| 07:14:37 | 0 | 0,0061361 |
| 07:14:37 | 0,309 | 0,0058983 |
| 07:14:37 | 0,61799 | 0,0056855 |
| 07:14:37 | 0,92699 | 0,0054978 |
| 07:14:37 | 1,236 | 0,0053299 |
| 07:14:37 | 1,545 | 0,0051582 |
| 07:14:37 | 1,854 | 0,0049979 |
| 07:14:37 | 2,163 | 0,0048426 |
+----------+----------+-----------+
这里是 link 的主题:https://plotly.com/python/dropdowns/
PS1 :我知道如何创建一个存储一个 'Time' 的数据框(对于这个例子,它将是一个包含 06:49:37 和 06:59:37 和 07:14:37 这样当我点击它时我不会在下拉列表中出现很多次。我不知道你是否可以使用这个想法但我有一个起点。
PS2 : 我已经使用了 plotly 库,但我真的不知道如何开始编码这个问题
你可以试试这个:
from plotly import graph_objs as go
import pandas as pd
data = {'Time':['06:48:37', '06:48:37', '06:48:37',
'06:59:37', '06:59:37', '06:59:37',
'07:14:37', '07:14:37', '07:14:37'],
'Column1':[1, 2, 3, 4, 5, 6,7,8, 9],
'Column2':[1, 2, 1, 2, 1, 2,1, 2, 1],
'Column3':[3, 4, 5, 6, 7, 8,9,10, 11],
'Column4':[1, 2, 1, 2, 1, 2, 1, 2,1]}
df = pd.DataFrame(data)
lst=[]
lst2 = []
for i,time in enumerate(df['Time'].unique()):
lst.append(
go.Scatter(name=time, # convert to str if Time column is not str
x=df.loc[df['Time']==time,'Column1'],
y=df.loc[df['Time']==time,'Column2'],
mode='lines'
)
)
lst.append(
go.Scatter(name=time, # convert to str if Time column is not str
x=df.loc[df['Time']==time,'Column3'],
y=df.loc[df['Time']==time,'Column4'],
mode='lines'
)
)
lst3 = [False]*len(df['Time'].unique()) * 2 # 2 is number of plots per timestamp
lst3[i*2:(i+1)*2]=[True,True]
lst2.append(dict(label=time,
method="update",
args=[{"visible": lst3}]))
plot = go.Figure(data=lst,
layout=dict(updatemenus=[dict(active=0, buttons=lst2)],
showlegend=False)
)
plot.show()