Esempio n. 1
0
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()
Esempio n. 2
0
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(),
    )
Esempio n. 3
0
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')
Esempio n. 4
0
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()
Esempio n. 5
0
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()
Esempio n. 6
0
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()
Esempio n. 7
0
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()
Esempio n. 8
0
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()
Esempio n. 9
0
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()
Esempio n. 10
0
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()
Esempio n. 11
0
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
Esempio n. 12
0
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()
Esempio n. 13
0
    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")
Esempio n. 14
0
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()
Esempio n. 15
0
    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)
Esempio n. 16
0
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')
Esempio n. 17
0
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()
Esempio n. 18
0
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()
Esempio n. 19
0
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()
Esempio n. 20
0
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')
Esempio n. 21
0
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)
Esempio n. 22
0
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()     
Esempio n. 23
0
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
Esempio n. 24
0
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()
>>> 
Esempio n. 26
0
#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()
Esempio n. 27
0
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()
Esempio n. 28
0
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
Esempio n. 29
0
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()
Esempio n. 30
0
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()
Esempio n. 31
0
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()
Esempio n. 32
0
def test_effectscatter_splitline():
    es = EffectScatter("动态散点图各种图形示例")
    es.add("", [10], [10])
    assert es.options["xAxis"][0]["splitLine"]["show"] is True
Esempio n. 33
0
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
Esempio n. 34
0
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()     
Esempio n. 35
0
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")
Esempio n. 36
0
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()
Esempio n. 37
0
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()
Esempio n. 38
0
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')
Esempio n. 39
0
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()
Esempio n. 40
0
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()