Прежде всего, я студент ChemE и только что изучал Python на прошлой неделе ..
Для проекта мне нужно показать мои данные в приложении. Вместо файла excel, содержащего 10K + строк, я хотел бы создать интерактивный график, используя plotly.
Данные выглядят следующим образом ( Excel )
Catalyst | Temp | Response 1 | Response 2 | Response 3
_______________________________________________________
Catalyst a | 10| Response 1 | Response 2 | Response 3
Catalyst a | 20| Response 1 | Response 2 | Response 3
Catalyst a | 30| Response 1 | Response 2 | Response 3
.....................................................
Catalyst F | 10| Response 1 | Response 2 | Response 3
Catalyst F | 20| Response 1 | Response 2 | Response 3
Catalyst F | 30| Response 1 | Response 2 | Response 3
На графике вы выбираете Catalyst и желаемый ответ. Я выяснил, как я могу редактировать ответ для данного катализатора, используя этот код:
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import pandas as pd
def graph(df,XXX):
name = "Test_"+str(XXX)+".html"
title = "Test of "+str(XXX)
fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(
go.Scatter(x = df.iloc[:,1],
y = df.iloc[:,2]),
secondary_y=False
)
fig.add_trace(
go.Scatter(x = df.iloc[:,1],
y = df.iloc[:,3],
visible=True,),
secondary_y=True
)
buttons1=[]
buttons2=[]
for dfk in df.keys():
buttons1.append(dict(method='restyle',
label=dfk,
visible=True,
args=[{'y':[df[dfk].values],
'name':dfk},[0]],
)
)
for dfk in df.keys():
buttons2.append(dict(method='restyle',
label=dfk,
visible=True,
args=[{'y':[df[dfk].values],
'name':dfk},[1]],
)
)
del buttons1[0:2] #Remove Cat & Temp key
del buttons2[0:2]
updatemenu=[]
menu1=dict()
updatemenu.append(menu1)
menu2=dict()
updatemenu.append(menu2)
#updatemenu[1]
updatemenu[0]['buttons']=buttons1
updatemenu[0]['x']=0.17
updatemenu[0]['y']=1.12
updatemenu[1]['buttons']=buttons2
updatemenu[1]['x']=0.36
updatemenu[1]['y']=1.12
fig.update_layout(showlegend=False, updatemenus=updatemenu)
fig.update_layout(
annotations=[
dict(text="Left y-axis:", x=0, xref="paper", y=1.10, yref="paper",
align="left", showarrow=False),
dict(text="Right y-axis:", x=0.18, xref="paper", y=1.10,
yref="paper", showarrow=False)])
fig.update_layout(title_text = title)
fig.write_html(name, auto_open=True)
df=pd.read_excel('Dumy_for_stack.xlsx')
for Cat in df['Catalyst'].unique():
dfT = df[df['Catalyst']== Cat]
graph(dfT,Cat)
Но я хотел бы добавить третье меню, которое позволяет мне выбрать катализатор. Но как мне сделать меню, которое редактирует только «Catalyst #» и сохраняет «Response #»?
x = df[df['Catalyst'] == 'Catalyst #']['Temp]
y1 = df[df['Catalyst'] == 'Catalyst #']['Response #']
y2 = df[df['Catalyst'] == 'Catalyst #']['Response #']