Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import plotly
- import plotly.graph_objs
- import ipywidgets
- import pandas
- class Funds():
- def nome_fundo(self, nome):
- self.nome_fundo = nome
- def historico(self,a):
- self.historico = a
- dados = pandas.read_csv('Projeto.csv', delimiter=';')
- fundos = list(dados.columns)
- datas = dados[fundos[0]].tolist()
- fundos[0]='Todos'
- opcoes = fundos
- fuds = []
- m = len(opcoes)
- minimo = 300000
- for i in range(1,m):
- d_i = dados[opcoes[i]].tolist()
- f_i = Funds()
- f_i.historico = d_i
- f_i.nome_fundo = opcoes[i]
- fuds.append(f_i)
- if len(d_i) < minimo:
- minimo = len(d_i)
- dias=[]
- fig=plotly.graph_objs.Figure()
- for i in range(minimo):
- dias.append(i-minimo)
- layout = plotly.graph_objs.Layout(
- title='Desempenho Fundos',
- yaxis_title='%CDI',
- xaxis_title='D-')
- def up(fundos,periodo):
- data = []
- if 'Todos' in fundos:
- n = 0
- while n < m-1:
- y_a = fuds[n].historico
- traco=plotly.graph_objs.Scatter(
- x=dias[minimo-periodo[1]:minimo-periodo[0]+1],
- y=y_a[minimo-periodo[1]:minimo-periodo[0]+1],
- mode='lines',
- name=opcoes[n+1],
- line=plotly.graph_objs.scatter.Line(width=0.8),
- hoverlabel=plotly.graph_objs.scatter.Hoverlabel(bgcolor='blue'))
- data.append(traco)
- n +=1
- else:
- for i in fundos:
- j = opcoes.index(i)-1
- y_a=fuds[j].historico
- traco=plotly.graph_objs.Scatter(
- x=dias[minimo-periodo[1]:minimo-periodo[0]+1],
- y=y_a[minimo-periodo[1]:minimo-periodo[0]+1],
- mode='lines',
- name=i,
- line=plotly.graph_objs.scatter.Line(width=0.8),
- hoverlabel=plotly.graph_objs.scatter.Hoverlabel(bgcolor='blue'))
- data.append(traco)
- traco_ct=plotly.graph_objs.Scatter(
- x=dias[minimo-periodo[1]:minimo-periodo[0]+1],
- y=['100']*(periodo[1]+1-periodo[0]), mode='lines',
- name='Taxa CDI', opacity = 0.6, line=dict(
- color='black',width=0.4))
- data.append(traco_ct)
- fig=plotly.graph_objs.Figure(data=data,layout=layout)
- fig.show()
- fundos=ipywidgets.SelectMultiple(options=opcoes,
- value=['Top'],
- description='Fundos:')
- periodo=ipywidgets.IntRangeSlider(value=[1,minimo], min=1,
- max=minimo,
- description='Período:',
- layout=ipywidgets.Layout(width='75%',
- height='90%'),
- continuous_update=False)
- periodo.style.handle_color='green'
- ipywidgets.interactive(up,fundos=fundos,periodo=periodo)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement