def test_grid_four_direction(): v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%") bar.add("商家A", CLOTHES, v1, is_stack=True) bar.add("商家B", CLOTHES, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") line.add("最高气温", WEEK, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", WEEK, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") grid.render()
def strategy(): form = request.form getStock = form.get('stock') stock = getStock if getStock else "usTSLA" getCircle = form.get('circle') circle = getCircle if getCircle else "120" buyStrategy = BuyTrendStrategy(stock, int(circle), 1000000) closeDayList, closeValueList = buyStrategy.get_close_line() buyDayList, buyValueList = buyStrategy.get_buy_point() closeLine = Line("趋势购买策略", width="400", height="300") closeLine.add(stock, closeDayList, closeValueList) buyES = EffectScatter("购买点", width="400", height="300") buyES.add("购买点", buyDayList, buyValueList, symbol_size=8, effect_scale=3, effect_period=3, symbol="triangle") overlap = Overlap() overlap.add(closeLine) overlap.add(buyES) return render_template( "strategy.html", strategyEchart=overlap.render_embed(), host=REMOTE_HOST, script_list=buyES.get_js_dependencies(), )
def view(numList): line = Line('折线图', width=2000) atter = ['数据异常', '不及格', '及格', '良好', '优秀', '满分'] v1 = [numList[0], numList[1], numList[2], numList[3], numList[4], numList[5]] line.add('最高成绩', atter, v1, mark_point=['max'], # 标点最大值 mark_line=['average']) # 虚线位置是平均分 line.add('最低成绩', atter, v1, mark_point=['min'], legend_pos='20%') es = EffectScatter() # 调用闪烁点 es.add('', atter, v1, effect_scale=8) # 调用合并函数,再一个图表上输出 overlop = Overlap() overlop.add(line) overlop.add(es) pie = Pie('饼图', title_pos='80%') pie.add('', atter, v1, radius=[60, 30], # 控制内外半径的 center=[65, 50], legend_pos='80%', legend_orient='vertical') # 显示两个示例图的调用函数,不然会覆盖 grid = Grid() grid.add(overlop, grid_right='50%') grid.add(pie, grid_left='60%') grid.render('abc.html')
def test_grid_four_direction(): attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%") bar.add("商家A", attr, v1, is_stack=True) bar.add("商家B", attr, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") grid.render()
def test_line_es(): v1 = [5, 20, 36, 10, 10, 100] line = Line("line-EffectScatter 示例") line.add("", CLOTHES, v1, is_random=True) es = EffectScatter() es.add("", CLOTHES, v1, effect_scale=8) overlap = Overlap() overlap.add(line) overlap.add(es) overlap.render()
def test_grid_left_right(): v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter(width=1200) scatter.add("散点图示例", v1, v2, legend_pos="70%") es = EffectScatter() es.add("动态散点图示例", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_pos="20%") grid = Grid() grid.add(scatter, grid_left="60%") grid.add(es, grid_right="60%") grid.render()
def effectscatterByInd(title, datas, size=None): # import random # data = [random.randint(0, 100) for _ in range(80)] range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] if size is None: scatter = EffectScatter( title, width=320, height=180, title_pos="center", # background_color='#f0f0f0', ) else: scatter = EffectScatter( title, width=size['width'], height=size['height'], title_pos="center", # background_color='#f0f0f0', ) for _val in datas: _effect_scale = 3. _symbol_size = 3. if "high" in _val: _effect_scale += 1.5 _symbol_size += 8. elif "norm" in _val: _effect_scale += 1. _symbol_size += 5. else: logging.log(logging.WARN, u">>> effectscatterByInd: %s" % datas[_val]['label']) scatter.add("", datas[_val]['x'], datas[_val]['y'], is_visualmap=False, visual_range_color=range_color, effect_scale=_effect_scale, symbol_size=_symbol_size, ) scatter.options['toolbox']['show'] = False scatter.options['xAxis'][0]['show'] = False scatter.options['yAxis'][0]['show'] = False return scatter.render_embed()
def effectscatter(title, datas, size=None): # import random # data = [random.randint(0, 100) for _ in range(80)] range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] if size is None: scatter = EffectScatter( title, width=320, height=180, title_pos="center", background_color='#f0f0f0', ) else: scatter = EffectScatter( title, width=size['width'], height=size['height'], title_pos="center", background_color='#f0f0f0', ) _scale = 1.5 for _data in datas: if "v" not in _data: scatter.add("", _data['x'], _data['y'], is_visualmap=False, visual_range_color=range_color, mark_line=['average'], mark_point=['max', 'min'], effect_scale=_scale, symbol_size=5, ) _scale += 1. else: scatter.add("", _data['x'], _data['y'], is_visualmap=False, # visual_range_color=range_color, mark_line=['average'], mark_point=['max', 'min'], effect_scale=1.5 + float(_data['v'])/40., symbol_size=3+_data['v']/3, ) scatter.options['toolbox']['show'] = False return scatter.render_embed()
def duotu2_fun(): attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", title_pos="65%") bar.add("商家A", attr, v1, is_stack=True) bar.add("商家B", attr, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") attr = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] line.add( "最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], ) line.add( "最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%", ) v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add( "es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%", ) grid = Grid(height=720, width=1200) grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") return grid
def test_overlap_es_scatter(): v1 = [10, 20, 30, 40, 50, 60] v2 = [30, 30, 30, 30, 30, 30] v3 = [50, 50, 50, 50, 50, 50] v4 = [10, 10, 10, 10, 10, 10] es = EffectScatter("Scatter-EffectScatter 示例") es.add("es", v1, v2) scatter = Scatter() scatter.add("scatter", v1, v3) es_1 = EffectScatter() es_1.add("es_1", v1, v4, symbol="pin", effect_scale=5) overlap = Overlap() overlap.add(es) overlap.add(scatter) overlap.add(es_1) overlap.render()
def get_number_experience(self, kw_num=10): sql = 'select experience, sum(number) from job group by experience order by sum(number) desc' res = self.db.execute_sql(sql)[0] columns = [] data = [] for i in range(min(len(res), kw_num)): columns.append(res[i][0]) data.append(res[i][1]) es = EffectScatter(background_color='white', title_text_size=25, width=1000, height=600) es.add('工作经验与需求散点图', columns, data, symbol='triangle', effect_scale=5.5) es.render(path="D:/编程练习题/datasite/test/templates/charts/number.html")
def test_overlap_es_scatter(): v1 = [10, 20, 30, 40, 50, 60] v2 = [30, 30, 30, 30, 30, 30] v3 = [50, 50, 50, 50, 50, 50] v4 = [10, 10, 10, 10, 10, 10] es = EffectScatter("Scatter-EffectScatter 示例") es.add("es", v1, v2) scatter = Scatter() scatter.add("scatter", v1, v3) es_1 = EffectScatter() es_1.add("es_1", v1, v4, symbol='pin', effect_scale=5) overlap = Overlap() overlap.add(es) overlap.add(scatter) overlap.add(es_1) overlap.render()
mark_point=["max", "min"], mark_line=["average"], ) line.add( "最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%", ) v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add( "es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%", ) grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") grid.render(path="grid.pdf", delay=3)
from pyecharts import EffectScatter v1 = [10, 20, 30, 40, 50, 60] v2 = ['1', '20', '15', '10', '60', '133'] es = EffectScatter("动态散点图示例") es.add("effectScatter", v1, v2,symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin") es.render('涟漪散点1.html') es = EffectScatter("动态散点图") es.add("pin", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin") es.add("rect", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect") es.add("roundrec", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect") es.add("dimaond", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond") es.add("arrow", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow") es.add("triangle", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle") es.render('涟漪散点2.html')
def test_effectscatter(): # effectSactter_0 v1 = [10, 20, 30, 40, 50, 60] v2 = [25, 20, 15, 10, 60, 33] es = EffectScatter("动态散点图示例") es.add("effectScatter", v1, v2) es.render() # effectScatter_1 es = EffectScatter("动态散点图各种图形示例") es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin") es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4, symbol="rect") es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5, symbol="roundRect") es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill', symbol="diamond") es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3, symbol="arrow") es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3, symbol="triangle") es.render()
def test_page_grid_timeline_overlap(): # Grid v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%") bar.add("商家A", CLOTHES, v1, is_stack=True) bar.add("商家B", CLOTHES, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") line.add( "最高气温", WEEK, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], ) line.add( "最低气温", WEEK, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%", ) v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add( "es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%", ) grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") # Timeline bar_1 = Bar("2012 年销量", "数据纯属虚构") bar_1.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_1.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_1.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_1.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2 = Bar("2013 年销量", "数据纯属虚构") bar_2.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3 = Bar("2014 年销量", "数据纯属虚构") bar_3.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4 = Bar("2015 年销量", "数据纯属虚构") bar_4.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5 = Bar("2016 年销量", "数据纯属虚构", height=720, width=1200) bar_5.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5.add( "冬季", CLOTHES, [randint(10, 100) for _ in range(6)], is_legend_show=True, ) timeline = Timeline(is_auto_play=True, timeline_bottom=0) timeline.add(bar_1, "2012 年") timeline.add(bar_2, "2013 年") timeline.add(bar_3, "2014 年") timeline.add(bar_4, "2015 年") timeline.add(bar_5, "2016 年") # Overlap attr = ["{}月".format(i) for i in range(1, 13)] v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] v3 = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2] bar = Bar(height=720, width=1200) bar.add("蒸发量", attr, v1) bar.add("降水量", attr, v2, yaxis_formatter=" ml", yaxis_max=250) line = Line() line.add("平均温度", attr, v3, yaxis_formatter=" °C") overlap = Overlap() overlap.add(bar) overlap.add(line, yaxis_index=1, is_add_yaxis=True) page = Page() page.add(grid) page.add(timeline) page.add(overlap) page.render()
def plot_result(cerebro, cerebro2, s='中国平安', ktype=0): if ktype == 0: df = get_data(s) k_value = df[['open', 'close', 'low', 'high']].values else: df = cal_hadata(s) # 画K线图数据 k_value = df[['ha_open', 'ha_close', 'ha_low', 'ha_high']].values date = df.index.strftime('%Y%m%d').tolist() # 引入pyecharts画图使用的是0.5.11版本,新版命令需要重写 from pyecharts import Kline, Line, Bar, EffectScatter, Overlap, Grid, Page # K线 kline = Kline(s + '行情走势') kline.add('日K线图', date, k_value, is_datazoom_show=True, is_splitline_show=False) # 加入5、20日均线 df['ma20'] = df.close.rolling(20).mean() df['ma5'] = df.close.rolling(5).mean() line = Line() v0 = df['ma5'].round(2).tolist() v = df['ma20'].round(2).tolist() line.add('5日均线', date, v0, is_symbol_show=False, line_width=2) line.add('20日均线', date, v, is_symbol_show=False, line_width=2) # 买卖点 scatter = EffectScatter('买卖点') buy_order_date = [] buy_order_price = [] sell_order_date = [] sell_order_price = [] total_cash = [] total_benifit = [] for order in cerebro[0].broker.orders: if order.isbuy(): buy_date = bt.num2date(order.dteos).isoformat() buy_date = ''.join(buy_date.split('-'))[0:8] buy_order_date.append(buy_date) buy_order_price.append(int(order.executed.price)) total_cash.append( int(cerebro[0].broker.startingcash - order.executed.value)) total_benifit.append( int(cerebro[0].broker.cash) + int(order.executed.value)) else: sell_date = bt.num2date(order.dteos).isoformat() sell_date = ''.join(sell_date.split('-'))[0:8] sell_order_date.append(sell_date) sell_order_price.append(int(order.executed.price)) total_cash.append( int(cerebro[0].broker.startingcash + order.executed.value)) total_benifit.append( int(cerebro[0].broker.cash) + int(order.executed.value)) # 设置散点的形状(cricle,rect,pin,triangle) scatter.add('Buy', buy_order_date, buy_order_price, symbol='triangle', symbol_size=16, color='aaa') scatter.add('Sell', sell_order_date, sell_order_price, symbol='cricle', symbol_size=16, color='111') # 加说明 # statistic = "收益率:" + str(cerebro.broker.getvalue()/(cerebro.broker.startingcash)) # 成交量 bar = Bar() bar.add('成交量', date, df['volume'], tooltip_tragger='axis', is_legend_show=False, is_yaxis_show=False, yaxis_max=5 * max(df['volume'])) overlap = Overlap() overlap.add(kline) overlap.add(line, ) overlap.add(bar, yaxis_index=1, is_add_yaxis=True) overlap.add(scatter) line2 = Line() # line2.add('账户现金', sorted(buy_order_date+sell_order_date), total_cash, is_symbol_show=True, line_width=2) result_date = cerebro[0].analyzers.transactions.get_analysis() line2.add('账户现金', result_date['date'], (cerebro[0].analyzers.transactions.get_analysis())['value'], is_symbol_show=True, line_width=2) line2.add('沪深300账户现金', (cerebro2[0].analyzers.transactions.get_analysis())['date'], (cerebro2[0].analyzers.transactions.get_analysis())['value'], is_symbol_show=True, line_width=2) page = Page() page.add(overlap) page.add(line2) return page.render(s + '.html')
def genetate_trade_history_html(tag, df, nowdate, begin_date, end_date): ypos_b = [] ypos_e = [] xpos_b = [] xpos_e = [] es = EffectScatter("買賣點標示") sel_df = df[df.loc[:, "date"] <= nowdate].tail(250).set_index('date') if (len(begin_date) == 0): return #print (lno(),sel_df) #print (lno(),sel_df.head()) if tag == 'buy': prev_date = begin_date[0] cnt = 0 for i in begin_date: try: y_pos = sel_df.at[i, 'low'] except: print(lno(), i) continue if prev_date == i: y_pos = y_pos - cnt * 30 cnt = cnt + 1 else: cnt = 0 prev_date = i ypos_b.append(y_pos) xpos_b.append(kline.time64_date(i)) prev_date = end_date[0] cnt = 0 for i in end_date: try: y_pos = sel_df.at[i, 'high'] except: print(lno(), i) continue if prev_date == i: y_pos = y_pos + cnt * 30 cnt = cnt + 1 else: cnt = 0 prev_date = i ypos_e.append(y_pos) xpos_e.append(kline.time64_date(i)) year = str(i)[:4] es.add("", xpos_b, ypos_b, symbol_size=8, effect_scale=1.5, effect_period=2, symbol="triangle") es.add("", xpos_e, ypos_e, symbol_size=8, effect_scale=1.5, effect_period=2, symbol="diamond") else: prev_date = begin_date[0] cnt = 0 for i in begin_date: try: y_pos = sel_df.at[i, 'high'] except: print(lno(), i) continue if prev_date == i: y_pos = y_pos + cnt * 30 cnt = cnt + 1 else: cnt = 0 prev_date = i ypos_b.append(y_pos) xpos_b.append(kline.time64_date(i)) prev_date = end_date[0] cnt = 0 for i in end_date: try: y_pos = sel_df.at[i, 'low'] except: print(lno(), i) continue if prev_date == i: y_pos = y_pos + cnt * 30 cnt = cnt + 1 else: cnt = 0 prev_date = i ypos_e.append(y_pos) xpos_e.append(kline.time64_date(i)) year = str(i)[:4] es.add("", xpos_b, ypos_b, symbol_size=8, effect_scale=1.5, effect_period=2, symbol="pin") es.add("", xpos_e, ypos_e, symbol_size=8, effect_scale=1.5, effect_period=2, symbol="diamond") sel_df.reset_index(inplace=True) now_str = datetime.now().strftime('%Y%m%d') filename = 'out/{0}_{1}_{2}.html'.format(nowdate.strftime('%Y%m%d'), tag, now_str) #sel_df=kline.get_stock_indexs_df(sel_df) kline.tse_kline_js('日K', sel_df, list(sel_df), filename, es) print(lno(), ypos_e)
def sysplot(sys, new=True, axes=None, style=1): """绘制系统实际买入/卖出信号 :param SystemBase sys: 系统实例 :param new: 仅在未指定axes的情况下生效,当为True时, 创建新的窗口对象并在其中进行绘制 :param axes: 指定在那个轴对象中进行绘制 :param style: 1 | 2 信号箭头绘制样式 """ kdata = sys.getTO() refdates = kdata.getDatetimeList() if kdata.getQuery().kType == KQuery.DAY: x_list = [d.date() for d in refdates] else: x_list = [d.datetime() for d in refdates] date_index = dict([(d,i) for i,d in enumerate(refdates)]) if axes is None: if new: axes = create_figure() kplot(kdata, axes=axes) else: axes = gca() es = EffectScatter() highest = round(max(HIGH(kdata)),2) lowest = round(min(LOW(kdata)), 2) height = highest - lowest tds = sys.tm.getTradeList() buy_dates = [] sell_dates = [] for t in tds: if t.business == BUSINESS.BUY: buy_dates.append(t.datetime) elif t.business == BUSINESS.SELL: sell_dates.append(t.datetime) else: pass dates = buy_dates buy_y_list = ['-' for i in range(len(refdates))] for d in dates: if d not in date_index: continue pos = date_index[d] krecord = kdata[pos] buy_y_list[pos] = round(krecord.lowPrice - height*0.02, 2) es.add("", x_list, buy_y_list, symbol_size=12, effect_scale=2.5, effect_period=0,symbol="triangle", is_label_show=True, label_formatter='B', label_pos = 'bottom', label_text_color = '#CD0000', label_color=['#CD0000', '#008B00']) dates = sell_dates sell_y_list = ['-' for i in range(len(refdates))] for d in dates: if d not in date_index: continue pos = date_index[d] krecord = kdata[pos] sell_y_list[pos] = round(krecord.highPrice + height*0.015, 2) es.add("", x_list, sell_y_list, symbol_size=20, effect_scale=2.5, effect_period=0,symbol="pin", is_label_show=True, label_formatter='S', label_pos = 'top', label_text_color = '#008B00', label_color=['#CD0000', '#008B00', '#008B00']) axes.add(es) gcf().set_xaxis(x_list) gcf().add_axis(axes) return gcf()
def Scatter1_fun(): v1 = [10, 20, 30, 40, 50, 60] v2 = [25, 20, 15, 10, 60, 33] es = EffectScatter("动态散点图示例") es.add("effectScatter", v1, v2) return es
def test_effectscatter_default(): v1 = [10, 20, 30, 40, 50, 60] v2 = [25, 20, 15, 10, 60, 33] es = EffectScatter("动态散点图示例") es.add("effectScatter", v1, v2) es.render()
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> # Part 8 Create Scatter plot with pyecharts >>> from pyecharts import EffectScatter >>> es = EffectScatter() >>> es.add("pin",[20],[20],symbol_size=20,effect_scale=3.5,effect_period=3,symbol="pin") <pyecharts.charts.effectscatter.EffectScatter object at 0x00988F50> >>> es.add("rect",[30],[30],symbol_size=12,effect_scale=4.5,effect_period=4,symbol="rect") <pyecharts.charts.effectscatter.EffectScatter object at 0x00988F50> >>> es.add("roundRect",[40],[40],symbol_size=30,effect_scale=5.5,effect_period=5,symbol="roundRect") <pyecharts.charts.effectscatter.EffectScatter object at 0x00988F50> >>> es.add("diamond_sample",[50],[50],symbol_size=10,effect_scale=6.5,effect_brushtype='fill',symbol="diamond") <pyecharts.charts.effectscatter.EffectScatter object at 0x00988F50> >>> es.add("arrow",[60],[60],symbol_size=16,effect_scale=5.5,effect_period=3,symbol="arrow") <pyecharts.charts.effectscatter.EffectScatter object at 0x00988F50> >>> es.add("triangle",[70],[70],symbol_size=12,effect_scale=4.5,effect_period=3,symbol="triangle") <pyecharts.charts.effectscatter.EffectScatter object at 0x00988F50> >>> es.render() >>>
#encoding=utf-8 from pyecharts import EffectScatter v1 = [10, 20, 30, 40, 50, 60] v2 = [25, 20, 15, 10, 60, 33] es = EffectScatter("动态散点图示例") es.add("effectScatter", v1, v2) es.render()
def draw_e_scatter(): v1 = [10, 20, 30, 40, 50, 60] v2 = [25, 20, 15, 10, 60, 33] es = EffectScatter("动态散点图示例") es.add("effectScatter", v1, v2) es.render()
def Scatter2_fun(): df = pd.DataFrame( pd.read_csv('mycharts/class.csv', encoding='gbk', header=0)) df1 = df[df["Sex"] == "女"] dtvalue11 = df1['Height'].values.tolist() dtvalue12 = df1['Weight'].values.tolist() es = EffectScatter("女生体重身高分布图") es.add( "", [dtvalue11[0]], [dtvalue12[0]], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin", ) es.add( "", [dtvalue11[1]], [dtvalue12[1]], symbol_size=12, effect_scale=4.5, effect_period=4, symbol="rect", ) es.add( "", [dtvalue11[2]], [dtvalue12[2]], symbol_size=30, effect_scale=5.5, effect_period=5, symbol="roundRect", ) es.add( "", [dtvalue11[3]], [dtvalue12[3]], symbol_size=10, effect_scale=6.5, effect_brushtype="fill", symbol="diamond", ) es.add( "", [dtvalue11[4]], [dtvalue12[4]], symbol_size=16, effect_scale=5.5, effect_period=3, symbol="arrow", ) es.add( "", [dtvalue11[5]], [dtvalue12[5]], symbol_size=6, effect_scale=2.5, effect_period=3, symbol="triangle", ) return es
def test_effectscatter_multiple_symbol_type(): es = EffectScatter("动态散点图各种图形示例") es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin") es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4, symbol="rect") es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5, symbol="roundRect") es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill', symbol="diamond") es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3, symbol="arrow") es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3, symbol="triangle") es.render()
def test_effectscatter_multiple_symbol_type(): es = EffectScatter("动态散点图各种图形示例") es.add( "", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin", ) es.add( "", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4, symbol="rect", ) es.add( "", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5, symbol="roundRect", ) es.add( "", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype="fill", symbol="diamond", ) es.add( "", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3, symbol="arrow", ) es.add( "", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3, symbol="triangle", ) es.render()
def sgplot(sg, new=True, axes=None, style=1, kdata=None): """绘制买入/卖出信号 :param SignalBase sg: 信号指示器 :param new: 仅在未指定axes的情况下生效,当为True时,创建新的窗口对象并在其中进行绘制 :param axes: 指定在那个轴对象中进行绘制 :param style: 1 | 2 信号箭头绘制样式 :param KData kdata: 指定的KData(即信号发生器的交易对象), 如该值为None,则认为该信号发生器已经指定了交易对象, 否则,使用该参数作为交易对象 """ if kdata is None: kdata = sg.getTO() else: sg.setTO(kdata) refdates = kdata.getDatetimeList() if kdata.getQuery().kType == KQuery.DAY: x_list = [d.date() for d in refdates] else: x_list = [d.datetime() for d in refdates] date_index = dict([(d,i) for i,d in enumerate(refdates)]) if axes is None: if new: axes = create_figure() kplot(kdata, axes=axes) else: axes = gca() es = EffectScatter() highest = round(max(HIGH(kdata)),2) lowest = round(min(LOW(kdata)), 2) height = highest - lowest dates = sg.getBuySignal() buy_y_list = ['-' for i in range(len(refdates))] for d in dates: if d not in date_index: continue pos = date_index[d] krecord = kdata[pos] buy_y_list[pos] = round(krecord.lowPrice - height*0.02, 2) es.add("", x_list, buy_y_list, symbol_size=12, effect_scale=2.5, effect_period=0,symbol="triangle", is_label_show=True, label_formatter='B', label_pos = 'bottom', label_text_color = '#CD0000', label_color=['#CD0000', '#008B00']) dates = sg.getSellSignal() sell_y_list = ['-' for i in range(len(refdates))] for d in dates: if d not in date_index: continue pos = date_index[d] krecord = kdata[pos] sell_y_list[pos] = round(krecord.highPrice + height*0.015, 2) es.add("", x_list, sell_y_list, symbol_size=20, effect_scale=2.5, effect_period=0,symbol="pin", is_label_show=True, label_formatter='S', label_pos = 'top', label_text_color = '#008B00', label_color=['#CD0000', '#008B00', '#008B00']) axes.add(es) gcf().set_xaxis(x_list) gcf().add_axis(axes) return gcf()
def test_effectscatter_splitline(): es = EffectScatter("动态散点图各种图形示例") es.add("", [10], [10]) assert es.options["xAxis"][0]["splitLine"]["show"] is True
def create_charts(): page = Page() attr = ['A', 'B', 'C', 'D', 'E', 'F'] v1 = [10, 20, 30, 40, 50, 60] v2 = [38, 28, 58, 48, 78, 68] bar = Bar("折线图-柱状图叠加") bar.add("bar", attr, v1) line = Line() line.add("line", attr, v2) chart = Overlap(width=WIDTH, height=HEIGHT) chart.add(bar) chart.add(line) page.add(chart) v1 = [10, 20, 30, 40, 50, 60] v2 = [30, 30, 30, 30, 30, 30] v3 = [50, 50, 50, 50, 50, 50] v4 = [10, 10, 10, 10, 10, 10] es = EffectScatter("散点图-动态散点图叠加") es.add("es", v1, v2) scatter = Scatter() scatter.add("scatter", v1, v3) es_1 = EffectScatter() es_1.add("es_1", v1, v4, symbol='pin', effect_scale=5) chart = Overlap(width=WIDTH, height=HEIGHT) chart.add(es) chart.add(scatter) chart.add(es_1) page.add(chart) attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 10, 100] line = Line("折线图-动态散点图叠加") line.add("", attr, v1, is_random=True) es = EffectScatter() es.add("", attr, v1, effect_scale=8) overlap = Overlap(width=WIDTH, height=HEIGHT) overlap.add(line) overlap.add(es) page.add(overlap) v1 = [[2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22]] attr = ["2017/7/{}".format(i + 1) for i in range(31)] kline = Kline("K 线图-折线图叠加") kline.add("日K", attr, v1) line_1 = Line() line_1.add("line-1", attr, [random.randint(2400, 2500) for _ in range(31)]) line_2 = Line() line_2.add("line-2", attr, [random.randint(2400, 2500) for _ in range(31)]) chart = Overlap(width=WIDTH, height=HEIGHT) chart.add(kline) chart.add(line_1) chart.add(line_2) page.add(chart) attr = ["{}月".format(i) for i in range(1, 13)] v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] v3 = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2] bar = Bar("多 Y 轴叠加") bar.add("蒸发量", attr, v1) bar.add("降水量", attr, v2, yaxis_formatter=" ml", yaxis_max=250) line = Line() line.add("平均温度", attr, v3, yaxis_formatter=" °C") chart = Overlap(width=WIDTH, height=HEIGHT) chart.add(bar) chart.add(line, yaxis_index=1, is_add_yaxis=True) page.add(chart) return page
wordcloud2 = WordCloud(width=1300, height=620) wordcloud2.add("", name, value, word_size_range=[30, 100], shape='diamond') wordcloud2.show_config() wordcloud2.render(path='变形词云.html') from pyecharts import Bar bar = Bar("我的第一个图表", "这里是副标题") bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90], is_more_utils=True) bar.show_config() bar.render(path='bar.html') from pyecharts import EffectScatter v1 = [10, 20, 30, 40, 50, 60] v2 = [25, 20, 15, 10, 60, 33] es = EffectScatter("带有涟漪特效动画的动态散点图示例") es.add("effectScatter", v1, v2) es.render("effect_scatter.html") from pyecharts import Pie attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图示例") pie.add("", attr, v1, is_label_show=True) pie.render("pie.html") from pyecharts import Gauge gauge = Gauge("仪表盘示例") gauge.add("业务指标", "完成率", 66.66) gauge.show_config() gauge.render("gauge.html")
def test_grid(): # grid_0 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, is_grid=True) bar.add("商家A", attr, v1, is_stack=True, grid_bottom="60%") bar.add("商家B", attr, v2, is_stack=True, grid_bottom="60%") line = Line("折线图示例", title_top="50%") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_top="50%") bar.grid(line.get_series(), grid_top="60%") bar.show_config() bar.render() # grid_1 v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter(width=1200, is_grid=True) scatter.add("散点图示例", v1, v2, grid_left="60%", legend_pos="70%") es = EffectScatter() es.add("动态散点图示例", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_pos="20%") scatter.grid(es.get_series(), grid_right="60%") scatter.show_config() scatter.render() # grid_2 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%", is_grid=True) bar.add("商家A", attr, v1, is_stack=True, grid_bottom="60%", grid_left="60%") bar.add("商家B", attr, v2, is_stack=True, grid_bottom="60%", grid_left="60%", legend_pos="80%") line = Line("折线图示例") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") bar.grid(line.get_series(), grid_bottom="60%", grid_right="60%") bar.grid(scatter.get_series(), grid_top="60%", grid_left="60%") bar.grid(es.get_series(), grid_top="60%", grid_right="60%") bar.show_config() bar.render() # grid_3 line = Line("折线图示例", width=1200, is_grid=True) attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], grid_right="65%") line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图示例", title_pos="45%") pie.add("", attr, v1, radius=[30, 55], legend_pos="65%", legend_orient='vertical') line.grid(pie.get_series(), grid_left="60%") line.show_config() line.render() # grid_4 line = Line("折线图示例", width=1200, is_grid=True) attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], grid_right="60%") line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%", grid_right="60%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] value = [20, 40, 60, 80, 100, 120] v1 = [[2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22]] kline = Kline("K 线图示例", title_pos="60%") kline.add("日K", ["2017/7/{}".format(i + 1) for i in range(31)], v1, legend_pos="80%") line.grid(kline.get_series(), grid_left="55%") line.show_config() line.render() # grid_5 import random x_axis = ["12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a", "12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"] y_aixs = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"] data = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)] heatmap = HeatMap("热力图示例", height=700, is_grid=True) heatmap.add("热力图直角坐标系", x_axis, y_aixs, data, is_visualmap=True, visual_top="45%", visual_text_color="#000", visual_orient='horizontal', grid_bottom="60%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", title_top="52%") bar.add("商家A", attr, v1, is_stack=True) bar.add("商家B", attr, v2, is_stack=True, legend_top="50%") heatmap.grid(bar.get_series(), grid_top="60%") heatmap.show_config() heatmap.render()
from pyecharts import Line, EffectScatter, Overlap attr = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'] v1 = [5, 20, 36, 10, 10, 90] line = Line('线性_闪烁图示例') line.add('', attr, v1, is_random=True) es = EffectScatter() es.add('', attr, v1, effect_scale=8) #闪烁 overlop = Overlap() overlop.add(line) #必须先添加line,在添加es overlop.add(es) overlop.render('./picture12.html')
def test_grid(): # grid_0 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, is_grid=True) bar.add("商家A", attr, v1, is_stack=True, grid_bottom="60%") bar.add("商家B", attr, v2, is_stack=True, grid_bottom="60%") line = Line("折线图示例", title_top="50%") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_top="50%") bar.grid(line.get_series(), grid_top="60%") bar.show_config() bar.render() # grid_1 v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter(width=1200, is_grid=True) scatter.add("散点图示例", v1, v2, grid_left="60%", legend_pos="70%") es = EffectScatter() es.add("动态散点图示例", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_pos="20%") scatter.grid(es.get_series(), grid_right="60%") scatter.show_config() scatter.render() # grid_2 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%", is_grid=True) bar.add("商家A", attr, v1, is_stack=True, grid_bottom="60%", grid_left="60%") bar.add("商家B", attr, v2, is_stack=True, grid_bottom="60%", grid_left="60%", legend_pos="80%") line = Line("折线图示例") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") bar.grid(line.get_series(), grid_bottom="60%", grid_right="60%") bar.grid(scatter.get_series(), grid_top="60%", grid_left="60%") bar.grid(es.get_series(), grid_top="60%", grid_right="60%") bar.show_config() bar.render() # grid_3 line = Line("折线图示例", width=1200, is_grid=True) attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], grid_right="65%") line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图示例", title_pos="45%") pie.add("", attr, v1, radius=[30, 55], legend_pos="65%", legend_orient='vertical') line.grid(pie.get_series(), grid_left="60%") line.show_config() line.render() # grid_4 line = Line("折线图示例", width=1200, is_grid=True) attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], grid_right="60%") line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%", grid_right="60%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] value = [20, 40, 60, 80, 100, 120] v1 = [[2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22]] kline = Kline("K 线图示例", title_pos="60%") kline.add("日K", ["2017/7/{}".format(i + 1) for i in range(31)], v1, legend_pos="80%") line.grid(kline.get_series(), grid_left="55%") line.show_config() line.render() # grid_5 import random x_axis = [ "12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a", "12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p" ] y_aixs = [ "Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday" ] data = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)] heatmap = HeatMap("热力图示例", height=700, is_grid=True) heatmap.add("热力图直角坐标系", x_axis, y_aixs, data, is_visualmap=True, visual_top="45%", visual_text_color="#000", visual_orient='horizontal', grid_bottom="60%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", title_top="52%") bar.add("商家A", attr, v1, is_stack=True) bar.add("商家B", attr, v2, is_stack=True, legend_top="50%") heatmap.grid(bar.get_series(), grid_top="60%") heatmap.show_config() heatmap.render()