class PlotBarWithLine: def __init__(self): self.data = {{'label': []}, } self.titles = '' self.indexes = [] self.bar = Bar() self.line = Line() self.overlap = Overlap() self.script_list = self.overlap.get_js_dependencies() def plot_bar_line(self, dat, tit, ind): self.data = dat self.titles = tit self.indexes = ind self.bar = Bar(self.titles) for label in self.data.keys(): label_bar = '{}_B'.format(label) label_line = '{}_L'.format(label) self.bar.add(label_bar, self.indexes, self.data[label], is_label_show=True) self.line.add(label_line, self.indexes, self.data[label], is_label_show=True, mark_point=['max', 'min']) self.overlap.add(self.bar) self.overlap.add(self.line) return self.overlap.render_embed()
def the_data(fti): his_filters = {TrackIndex.fund_trackindexcode == fti} histories = TrackIndex.query.filter(*his_filters).order_by( TrackIndex.date).all() dates = [] closes = [] pe_ttms = [] for history in histories: if history.pe_ttm != 0: dates.append(history.date[2:4] + '/' + history.date[5:7] + '/' + history.date[8:10]) closes.append('%.2f' % history.close) pe_ttms.append('%.2f' % history.pe_ttm) else: dates.append(0) closes.append(0) pe_ttms.append(0) # 柱状图 bar_close = Bar() bar_close.add('POINT', dates, closes, mark_point=[{ "coord": [dates[-1], closes[-1]], "name": dates[-1] }], mark_point_textcolor='black', is_more_utils=True) bar_pe = Bar() bar_pe.add('PE', dates, pe_ttms, mark_point=[{ "coord": [dates[-1], pe_ttms[-1]], "name": dates[-1] }], mark_point_textcolor='black', is_more_utils=True) overlap = Overlap(width=1150, height=500) overlap.add(bar_pe) overlap.add(bar_close, yaxis_index=1, is_add_yaxis=True) return render_template('the_data.html', fti=fti, myechart=overlap.render_embed(), host=REMOTE_HOST, script_list=overlap.get_js_dependencies())