Example #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()
Example #2
0
def test_scatter_multi_dimension():
    data = [
        [28604, 77, 17096869],
        [31163, 77.4, 27662440],
        [1516, 68, 1154605773],
        [13670, 74.7, 10582082],
        [28599, 75, 4986705],
        [29476, 77.1, 56943299],
        [31476, 75.4, 78958237],
        [28666, 78.1, 254830],
        [1777, 57.7, 870601776],
        [29550, 79.1, 122249285],
        [2076, 67.9, 20194354],
        [12087, 72, 42972254],
        [24021, 75.4, 3397534],
        [43296, 76.8, 4240375],
        [10088, 70.8, 38195258],
        [19349, 69.6, 147568552],
        [10670, 67.3, 53994605],
        [26424, 75.7, 57110117],
        [37062, 75.4, 252847810]
    ]

    x_lst = [v[0] for v in data]
    y_lst = [v[1] for v in data]
    extra_data = [v[2] for v in data]
    sc = Scatter()
    sc.add("scatter", x_lst, y_lst, extra_data=extra_data, is_visualmap=True,
           visual_dimension=2, visual_orient='horizontal',
           visual_type='size', visual_range=[254830, 1154605773],
           visual_text_color='#000')
    sc.render()
Example #3
0
def main():

    dutPl0 = []
    dutpl1 = []
    maxCntPl0 = []
    maxCntPl1 = []
    page = Page("Cluster Padding Figure")
    txtFiles = [name for name in os.listdir('./') if name.endswith('.txt')]
    for textLogName in txtFiles:
        waferNum = re.split(r'_', textLogName)
        with open(textLogName, 'rt') as clusterFile:
            for line in clusterFile:
                if re.match(r'IncomingBBKCount[A-Za-z0-9_.\+\-\*\/\s]*BBKP', line):
                    splitColon  = re.split(r'\s*[:]\s*', line)
                    splitColon1 = splitColon[0]
                    splitColon2 = splitColon[1]
                    splitColon3 = splitColon[2]
                    listBlk     = re.split(r'\s*[\s]\s*', splitColon3)
                    padBlk = paddingBlk(listBlk)
                    maxCnt = clusterBlk(padBlk)
                    splitSpace = re.split(r'\s*[\s]\s*', splitColon1)
                    intDut = int(splitSpace[1].replace('DUT', ''))
                    if splitSpace[2] == "BBKP0":
                        dutPl0.append(intDut)
                        maxCntPl0.append(maxCnt)
                    else:
                        dutpl1.append(intDut)
                        maxCntPl1.append(maxCnt)
        scatter = Scatter(waferNum[2])
        scatter.add("PL0", dutPl0, maxCntPl0, xaxis_name = "DUT", yaxis_name = "Max Padding BB", is_more_utils = True)
        scatter.add("PL1", dutpl1, maxCntPl1, xaxis_name = "DUT", yaxis_name = "Max Padding BB", is_more_utils = True)
        page.add(scatter)
    page.render()
Example #4
0
def test_scatter_visualmap_type_size():
    scatter = Scatter("散点图示例")
    scatter.add(
        "B",
        v1[::-1],
        v2,
        is_visualmap=True,
        visual_type="size",
        visual_range_size=[20, 80],
    )
    scatter.render()
Example #5
0
def test_scatter_option(patched):
    patched.return_value = "1"
    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [10, 20, 30, 40, 50, 60]
    scatter = Scatter("scatter test")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2)
    actual_options = json.dumps(
        scatter.options, sort_keys=True, indent=4, cls=DefaultJsonEncoder
    )
    expected = get_fixture_content("scatter_options.json")
    for a, b in zip(actual_options.split("\n"), expected.split("\n")):
        eq_(a.strip(), b.strip())
Example #6
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()
Example #7
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()
Example #8
0
def test_scatter_xaxis_type_category():
    scatter = Scatter("散点图示例")
    scatter.add("A", ["a", "b", "c", "d", "e", "f"], v2)
    scatter.add(
        "B", ["a", "b", "c", "d", "e", "f"], v1[::-1], xaxis_type="category"
    )
    assert '"type": "category"' in scatter._repr_html_()
Example #9
0
def test_scatter_default():
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2)
    html_content = scatter._repr_html_()
    assert '"type": "value"' in html_content
    assert '"type": "category"' not in html_content
Example #10
0
def RGB(r,g,b):
    return "#{:02x}{:02x}{:02x}".format(r,g,b)

def HEX(hexcode):
    return tuple(map(ord,hexcode[1:].decode('hex')))



# ----------------------------------------------------------------------------
# scatter
from pyecharts import Scatter
v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]

scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2, is_visualmap=True,
            visual_type='size', visual_range_size=[20, 80])
scatter.render()

# babble
data = [
        [28604, 77, 17096869],
        [31163, 77.4, 27662440],
        [1516, 68, 1154605773],
        [13670, 74.7, 10582082],
        [28599, 75, 4986705],
        [29476, 77.1, 56943299],
        [31476, 75.4, 78958237],
        [28666, 78.1, 254830],
Example #11
0
    def plot(self):
        u"""
        Do a echarts plot to view all the conditions
        :return:
        """
        def custom_formatter(params):
            return params.value[3] + ": " + params.value[1]

        line = Line("", width="100%", height=800)

        attr = sorted([x["Name"] for x in self.data])
        names = [x for x in self.name[5:] if x]

        data = []

        for idx, i in enumerate(sorted(names)):
            if not i:
                continue
            tmp_value = []
            extra_name = []
            for x in self.data:
                tmp = self.meta.get(x["Name"], "NA")
                if isinstance(tmp, dict):
                    tmp.get("tissue", "NA")

                extra_name.append("%s (%s)" % (x["Name"], tmp))
                if x[i].endswith("%"):
                    tmp_value.append(float(x[i].replace("%", "")))
                else:
                    tmp_value.append(int(x[i].replace(",", "")))

            line.add(
                i,
                attr,
                tmp_value,
                is_datazoom_show=True,
                datazoom_type="both",
                datazoom_range=[0, 100],
                is_datazoom_extra_show=True,
                xaxis_rotate=30,
            )

            boxplot = Boxplot(i, width="60%", height=800)
            boxplot.add(i, [i],
                        boxplot.prepare_data([tmp_value]),
                        is_legend_show=False,
                        tooltip_formatter=custom_formatter,
                        is_datazoom_extra_show=True,
                        datazoom_extra_range=[0, 100])

            scatter = Scatter(width="60%", height=800)
            scatter.add(i,
                        extra_name,
                        tmp_value,
                        extra_data=extra_name,
                        extra_name=extra_name,
                        is_legend_show=False,
                        tooltip_formatter=custom_formatter,
                        is_datazoom_extra_show=True,
                        datazoom_extra_range=[0, 100],
                        xaxis_type="category",
                        xaxis_rotate=45)

            grid = Grid(
                width="100%",
                height=600,
            )

            grid.add(scatter, grid_right="25%", grid_bottom="25%")
            grid.add(boxplot, grid_left="80%", grid_bottom="25%")

            data.append(grid)

        grid = Page()
        grid.add(line)
        for i in data:
            grid.add(i)
        grid.render(self.output)
Example #12
0
def test_scatter():

    # scatter_0
    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [10, 20, 30, 40, 50, 60]
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2)
    scatter.show_config()
    scatter.render()

    # scatter_0_1
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2, is_visualmap=True)
    scatter.show_config()
    scatter.render()

    # scatter_0_2
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B",
                v1[::-1],
                v2,
                is_visualmap=True,
                visual_type='size',
                visual_range_size=[20, 80])
    scatter.show_config()
    scatter.render()

    # scatter_0_3
    scatter = Scatter("散点图示例")
    scatter.add("A", ["a", "b", "c", "d", "e", "f"], v2)
    scatter.add("B", ["a", "b", "c", "d", "e", "f"],
                v1[::-1],
                xaxis_type="category")
    scatter.show_config()
    scatter.render()

    # scatter_1
    scatter = Scatter("散点图示例")
    v1, v2 = scatter.draw("../images/pyecharts-0.png")
    scatter.add("pyecharts", v1, v2, is_random=True)
    scatter.show_config()
    scatter.render()

    # scatter_2
    scatter = Scatter("散点图示例", width=800, height=480)
    v1, v2 = scatter.draw("../images/love.png")
    scatter.add("Love", v1, v2)
    scatter.render()

    # scatter_3
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2)
    scatter.render()

    # scatter_4
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2, label_color=["#000"])
    scatter.render()
Example #13
0
def test_scatter_draw_sexy_black_bra():
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2, label_color=["#000"])
    scatter.render()
Example #14
0
# -*- coding: utf-8 -*-
"""
Created on Mon Dec  3 10:04:14 2018

@author: xuziyi

create data of qc aiops 2018
"""

import numpy as np
from pyecharts import Scatter

x = np.arange(100)
y = np.arange(100) + np.random.normal(loc=0, scale=15, size=100)

scatter =Scatter("相关性检验")
scatter.add("相关性", x, y, yaxis_min=0,yaxis_max=101)
scatter.show_config()
scatter.render(r"C:\Users\Administrator\Desktop\相关性检验.html")
line = Line('分类数目')
line.add(
    '数量',
    df_type.index.tolist(),
    df_type.values.tolist(),
    area_opacity=0.4,
    line_opacity=0.2,
)

page.add(line)

# print(as_order_datas.app_name.tolist())

datas = df.drop_duplicates(['app_name']).reset_index(drop=True)
'''scatter下载量图'''
scatter = Scatter('下载量图')
scatter.add('下载量',
            datas.app_name.tolist(),
            datas.install_count.tolist(),
            is_visualmap=True,

            xaxis_type="category",
            visual_range=[10, 300000000],
            is_datazoom_extra_show=True,
            datazoom_extra_type="slider",
            datazoom_extra_range=[0, 10000],
            yaxis_min=10,
            )

page.add(scatter)
page.render()
Example #16
0
def test_scatter_draw_love():
    scatter = Scatter("散点图示例", width=800, height=480)
    v1, v2 = scatter.draw("../images/love.png")
    scatter.add("Love", v1, v2)
    scatter.render()
Example #17
0
#散点图适合表现大量样本的多个属性的分布规律。散点图的每个点表示一个样本,每个坐标维度表示一个属性。
from pyecharts import Scatter
import pandas as pd 

dfboy = pd.DataFrame()
dfboy['weight'] = [56,67,65,70,57,60,80,85,76,64]
dfboy['height'] = [162,170,168,172,168,172,180,176,178,170]

dfgirl = pd.DataFrame()
dfgirl['weight'] = [50,62,60,70,57,45,62,65,70,56]
dfgirl['height'] = [155,162,165,170,166,158,160,170,172,165]

scatter = Scatter(title = "体格数据",width = 600,height = 420)
scatter.add(name = "boy", x_axis = dfboy['weight'], y_axis = dfboy['height'])
scatter.add(name = "girl", x_axis = dfgirl['weight'], y_axis = dfgirl['height'],
           yaxis_min = 130,yaxis_max = 200,xaxis_min = 30,xaxis_max = 100)

scatter.render("result.散点图示范.html")

scatter



#当样本属性维度多于2个时,散点图可以使用点的颜色或大小等方式来表达更多属性维度。下面示范使用点的大小表示第3个维度。
def custom_formatter(params):
    return (params.value[3] + ':' +
             str(params.value[0]) +','
             +str(params.value[1]) + ','
             +str(params.value[2]))

df = pd.DataFrame()
Example #18
0
def overlap_charts():
    page = Page()

    chart_init = {
        "width": WIDTH,
        "height": HEIGHT,
    }

    attr = ['A', 'B', 'C', 'D', 'E', 'F']
    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [38, 28, 58, 48, 78, 68]
    bar = Bar("折线图-柱状图叠加", **chart_init)
    bar.add("bar", attr, v1)
    line = Line()
    line.add("line", attr, v2)
    chart = Overlap()
    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("散点图-动态散点图叠加", **chart_init)
    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()
    chart.add(es)
    chart.add(scatter)
    chart.add(es_1)
    page.add(chart)

    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 线图-折线图叠加", **chart_init)
    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()
    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 轴叠加", **chart_init)
    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()
    chart.add(bar)
    chart.add(line, yaxis_index=1, is_add_yaxis=True)
    page.add(chart)

    return page
Example #19
0
from pyecharts import Scatter
'''散点图'''
# 输入数据
v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]
# 设置标题
scatter = Scatter("示例")
# 设置标签
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2)
# 生成html,打开即可
scatter.render()
Example #20
0
def test_scatter():

    # scatter_0
    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [10, 20, 30, 40, 50, 60]
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2)
    scatter.show_config()
    scatter.render()

    # scatter_0_1
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2, is_visualmap=True)
    scatter.show_config()
    scatter.render()

    # scatter_0_2
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2, is_visualmap=True, visual_type='size', visual_range_size=[20, 80])
    scatter.show_config()
    scatter.render()

    # scatter_1
    scatter = Scatter("散点图示例")
    v1, v2 = scatter.draw("../images/pyecharts-0.png")
    scatter.add("pyecharts", v1, v2, is_random=True)
    scatter.show_config()
    scatter.render()

    # scatter_2
    scatter = Scatter("散点图示例", width=800, height=480)
    v1, v2 = scatter.draw("../images/love.png")
    scatter.add("Love", v1, v2)
    scatter.render()

    # scatter_3
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2)
    scatter.render()

    # scatter_4
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2, label_color=["#000"])
    scatter.render()
Example #21
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()
Example #22
0
def test_scatter_draw__hot_red_bra():
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2)
    scatter.render()
# 散点图1
from pyecharts import Scatter
v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]

scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2)  #v1[::-1] 倒序

scatter.render("scatter01.html")

# 散点图2
v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]

scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add("B",
            v1[::-1],
            v2,
            is_visualmap=True,
            visual_type="size",
            visual_range_size=[20, 80])  #散点可见

scatter.render("scatter02.html")
Example #24
0
    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%")
Example #25
0
"""
文件名: $NAME.py
日期: 25  
作者: lvah
联系: [email protected]
代码描述: 


# 绘制电影时长和电影排名之间的关系
"""

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

filename = 'doc/special_top250.csv'
data = pd.read_csv(filename)
print(data.head())
# 获取电影时长
x_series = data.movie_duration
# 获取电影排名
y_series = data.num

from pyecharts import Scatter
scatter = Scatter("散点图")
scatter.add("", x_series, y_series)
scatter.render()
Example #26
0
def test_scatter_markline_coords():
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2, mark_line_coords=[[10, 10], [30, 30]])
    assert '"coord": [' in scatter._repr_html_()
Example #27
0
for i, element in enumerate(collections_detail.find({'boxoffice_num':{'$exists':True}})):
    if element['rating']['average'] == 0 or element['rate_quantity'] == '0' or not element['boxoffice_num']:
        continue
    for index, gen in enumerate(element['genres'], start=1):
        if gen not in other_list:
            break
        if index == len(element['genres']):
            gen = '其它'
    if not genre.get(gen):
        genre[gen] = {'title': [], 'rate': [], 'boxoffice': [], 'rate_quantity': []}
    genre[gen]['title'].append(element['title'])
    genre[gen]['rate'].append(element['rating']['average'])
    genre[gen]['boxoffice'].append(round(element['boxoffice_num']/10000,2))
    genre[gen]['rate_quantity'].append(element['rate_quantity'])

scatter = Scatter("电影评分-票房")
other_setting = {
    'legend_orient': 'vertical',
    'legend_pos': 'right',
    'legend_top': 'center',
    'is_datazoom_show': True,
    'datazoom_type': 'both',
    'datazoom_range':[0,40],
}
total_num = 0
for i in genre:
    total_num += len(genre[i]['rate'])
#     print(i)
#     print(len(genre[i]['boxoffice']), genre[i]['boxoffice'])
#     print(len(genre[i]['rate']), genre[i]['rate'])
#     print(len(genre[i]['title']), genre[i]['title'])
Example #28
0
def create_charts():
    page = Page()

    attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
    v1 = [5, 20, 36, 10, 75, 90]
    v2 = [10, 25, 8, 60, 20, 80]
    bar = Bar("柱状图示例", height=800, width=WIDTH)
    bar.add("商家A", attr, v1, is_stack=True)
    bar.add("商家B", attr, v2, is_stack=True)
    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%")
    chart = Grid()
    chart.add(bar, grid_bottom="60%")
    chart.add(line, grid_top="60%")
    page.add(chart)

    v1 = [5, 20, 36, 10, 75, 90]
    v2 = [10, 25, 8, 60, 20, 80]
    scatter = Scatter("散点图示例", width=WIDTH, title_pos="55%")
    scatter.add("scatter", v1, v2, legend_pos="70%")
    es = EffectScatter("动态散点图示例")
    es.add("effectScatter", [11, 11, 15, 13, 12, 13, 10],
           [1, -2, 2, 5, 3, 2, 0],
           effect_scale=6,
           legend_pos="20%")
    chart = Grid()
    chart.add(scatter, grid_left="60%")
    chart.add(es, grid_right="60%")
    page.add(chart)

    attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
    v1 = [5, 20, 36, 10, 75, 90]
    v2 = [10, 25, 8, 60, 20, 80]
    bar = Bar("柱状图示例", height=740, width=WIDTH, 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%")
    chart = Grid()
    chart.add(bar, grid_bottom="60%", grid_left="60%")
    chart.add(line, grid_bottom="60%", grid_right="60%")
    chart.add(scatter, grid_top="60%", grid_left="60%")
    chart.add(es, grid_top="60%", grid_right="60%")
    page.add(chart)

    line = Line("折线图示例", width=WIDTH)
    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%")
    attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
    v1 = [11, 12, 13, 10, 10, 10]
    pie = Pie("饼图示例", title_pos="55%")
    pie.add("",
            attr,
            v1,
            radius=[45, 65],
            center=[70, 50],
            legend_pos="85%",
            legend_orient='vertical')
    chart = Grid()
    chart.add(line, grid_right="55%")
    chart.add(pie, grid_left="60%")
    page.add(chart)

    line = Line("折线图示例", width=WIDTH)
    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 = [[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%")
    chart = Grid()
    chart.add(line, grid_right="60%")
    chart.add(kline, grid_left="55%")
    page.add(chart)

    data = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]
    heatmap = HeatMap("热力图示例", width=WIDTH, height=700)
    heatmap.add("热力图直角坐标系",
                X_TIME,
                Y_WEEK,
                data,
                is_visualmap=True,
                visual_top="45%",
                visual_text_color="#000",
                visual_orient='horizontal')
    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%")
    chart = Grid()
    chart.add(heatmap, grid_bottom="60%")
    chart.add(bar, grid_top="60%")
    page.add(chart)

    line = Line("折线图示例", width=WIDTH, height=700)
    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"],
             legend_top="50%",
             mark_line=["average"],
             is_datazoom_show=True,
             datazoom_xaxis_index=[0, 1])

    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_top="50%")
    kline.add("日K", ["2017/7/{}".format(i + 1) for i in range(31)],
              v1,
              is_datazoom_show=True)

    chart = Grid()
    chart.add(line, grid_top="60%")
    chart.add(kline, grid_bottom="60%")
    page.add(chart)

    attr = ['{}天'.format(i) for i in range(1, 31)]
    line_top = Line("折线图示例", width=WIDTH, height=700)
    line_top.add("最高气温",
                 attr, [random.randint(20, 100) for i in range(30)],
                 mark_point=["max", "min"],
                 mark_line=["average"],
                 legend_pos='38%')
    line_bottom = Line()
    line_bottom.add("最低气温",
                    attr, [random.randint(20, 100) for i in range(30)],
                    mark_point=["max", "min"],
                    mark_line=["average"],
                    is_yaxis_inverse=True,
                    xaxis_pos='top')
    chart = Grid()
    chart.add(line_top, grid_bottom='60%')
    chart.add(line_bottom, grid_top='50%')
    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("Overlap+Grid 示例", title_pos="40%", width=1100, height=600)
    bar.add("蒸发量", attr, v1)
    bar.add("降水量",
            attr,
            v2,
            yaxis_formatter=" ml",
            yaxis_max=250,
            legend_pos="85%",
            legend_orient="vertical",
            legend_top="45%")
    line = Line()
    line.add("平均温度", attr, v3, yaxis_formatter=" °C")
    overlap = Overlap()
    overlap.add(bar)
    overlap.add(line, is_add_yaxis=True, yaxis_index=1)

    chart = Grid()
    chart.add(overlap, grid_right='20%')
    page.add(chart)

    return page
Example #29
0
from pyecharts import Scatter

# v1 = [10, 20, 30, 40, 50, 60]
# v2 = [10, 20, 30, 40, 50, 60]
# scatter = Scatter("散点图示例")
# scatter.add("A", v1, v2)
# scatter.add("B", v1[::-1], v2)
# scatter.show_config()
# scatter.render(r"Scatter(散点图).html")

scatter = Scatter("散点图示例", width=1000, height=480)
v1, v2 = scatter.draw("cup.png")
scatter.add("Cup", v1, v2, label_color='#000')
scatter.render(r"Scatter(散点图).html")
Example #30
0
def test_scatter_draw_pyecharts():
    scatter = Scatter("散点图示例")
    v1, v2 = scatter.draw("../images/pyecharts-0.png")
    scatter.add("pyecharts", v1, v2, is_random=True)
    scatter.render()
def test_scatter_visualmap():
    # visual type 'color'
    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [10, 20, 30, 40, 50, 60]
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2, is_visualmap=True)
    scatter.render()

    # visual type 'size'
    scatter = Scatter("散点图示例")
    # scatter.add("A", v1, v2)
    scatter.add("B",
                v1[::-1],
                v2,
                is_visualmap=True,
                visual_type='size',
                visual_range_size=[20, 80])
    scatter.render()
Example #32
0
	def bivar(data,feature,t_type,target=None,draw_type='line',bins=20,tree_depth=4,woe = None,d_reorder=False,cut='none',cut_way='auto',\
          custom_bin=[],cut_num=None,cut_start=None,fill_na=-99999,text_print=True,save=None,path='./'):
		# data is dataframe
		# feature is feature name
		# target is your target name, should be binary integer
		# t_type has two selection, 'c' or 'd', 'c' means continue, 'd' means discreate
		# draw_type has line and scatter
		# bins means you can choose how many bins to cut by yourself
		# tree_depth is only working for decision tree binning
		# woe is only working for woe binning
		# cut has three selection, 'none','qcut','cut','F-D' only for numerical col
		# d_reorder will sort categorical values and reorder it
		# example bivar(df,'feature2','is_over','c')
		# make sure feature and target in your dataframe
		data=data;feature=feature;target=target;t_type=t_type
		X = data[feature]
		if target != None:
			Y = data[target]
		if fill_na != -99999:
			X = X.fillna(fill_na)
		missing_exist = X.isnull().any()
		#fillna value if it has.
		if cut == 'none':
			if (target != None) & (missing_exist == True):
				# Data preprocessing
				temp_df = data[[feature,target]].fillna('missing').copy()
				feature_a = temp_df[[feature,target]].groupby(feature).size()
				feature_b = temp_df[[feature,target]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)
			elif (target != None) & (missing_exist == False):
				# Data preprocessing
				temp_df = data[[feature,target]].fillna(fill_na).copy()
				feature_a = temp_df[[feature,target]].groupby(feature).size()
				feature_b = temp_df[[feature,target]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)
			elif (target == None) & (missing_exist == False):
				# Data preprocessing
				temp_df = data[[feature]].fillna(fill_na).copy()
				feature_a = temp_df[[feature]].groupby(feature).size()
				feature_b = temp_df[[feature]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)
			else:
				# Data preprocessing
				temp_df = data[[feature]].fillna('missing').copy()
				feature_a = temp_df[[feature]].groupby(feature).size()
				feature_b = temp_df[[feature]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)   
			# check if has missing value in dataframe
			# Data preprocessing with missing value
			if missing_exist:
				if (t_type == 'c'):
					missing_df = feature_final.loc['missing':'missing']
					feature_final = feature_final[feature_final.index != 'missing']
					index_list = list(pd.cut(feature_final.index, bins = bins))
					feature_final.index=index_list
					feature_final.index.name=feature
					feature_final = feature_final.groupby(feature_final.index).sum()
					feature_final = feature_final.reindex(list(OrderedSet(index_list)))
					if target != None:
						feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
				elif target != None:
					feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
			# Data preprocessing w/o missing value
			else:
				if (t_type == 'c'):
					index_list = list(pd.cut(feature_final.index, bins = bins))
					feature_final.index=index_list
					feature_final.index.name=feature
					feature_final = feature_final.groupby(feature_final.index).sum()
					feature_final = feature_final.reindex(list(OrderedSet(index_list)))
					feature_final.index = list(OrderedSet(index_list))
					if target != None:
						feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
				elif target != None:
					feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
			feature_final.reset_index(inplace=True)
			feature_final.rename(columns={'index':feature},inplace=True)
		if cut == 'custom':
			if (target != None) & (missing_exist == True):
				# Data preprocessing
				temp_df = data[[feature,target]].fillna('missing').copy()
				feature_a = temp_df[[feature,target]].groupby(feature).size()
				feature_b = temp_df[[feature,target]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)
			elif (target != None) & (missing_exist == False):
				# Data preprocessing
				temp_df = data[[feature,target]].fillna(fill_na).copy()
				feature_a = temp_df[[feature,target]].groupby(feature).size()
				feature_b = temp_df[[feature,target]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)
			elif (target == None) & (missing_exist == False):
				# Data preprocessing
				temp_df = data[[feature]].fillna(fill_na).copy()
				feature_a = temp_df[[feature]].groupby(feature).size()
				feature_b = temp_df[[feature]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)
			else:
				# Data preprocessing
				temp_df = data[[feature]].fillna('missing').copy()
				feature_a = temp_df[[feature]].groupby(feature).size()
				feature_b = temp_df[[feature]].groupby(feature).sum()
				feature_final = pd.concat([feature_a,feature_b],axis=1)
				feature_final.rename(columns = {0:'total'},inplace=True)
			# check if has missing value in dataframe
			# Data preprocessing with missing value
			if missing_exist:
				if ((t_type == 'c') & (len(temp_df[feature].unique())>=bins)):
					missing_df = feature_final.loc['missing':'missing']
					feature_final = feature_final[feature_final.index != 'missing']
					index_list = list(pd.cut(feature_final.index, bins = custom_bin))
					feature_final.index=index_list
					feature_final.index.name=feature
					feature_final = feature_final.groupby(feature_final.index).sum()
					feature_final = feature_final.reindex(list(OrderedSet(index_list)))
					if target != None:
						feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
				elif target != None:
					feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
			# Data preprocessing w/o missing value
			else:
				if ((t_type == 'c') & (len(temp_df[feature].unique())>=bins)):
					index_list = list(pd.cut(feature_final.index, bins = custom_bin))
					feature_final.index=index_list
					feature_final.index.name=feature
					feature_final = feature_final.groupby(feature_final.index).sum()
					feature_final = feature_final.reindex(list(OrderedSet(index_list)))
					feature_final.index = list(OrderedSet(index_list))
					if target != None:
						feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
				elif target != None:
					feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
			feature_final.reset_index(inplace=True)
			feature_final.rename(columns={'index':feature},inplace=True)
		if ((t_type == 'c') & (cut == 'F-D') & (target != None)):
			if missing_exist == True:
				temp_df = data[[feature,target]].fillna('missing').copy()
			elif missing_exist != True:
				temp_df = data[[feature,target]].fillna(fill_na).copy()
			# Data preprocessing
			feature_a = temp_df[[feature,target]].groupby(feature).size()
			feature_b = temp_df[[feature,target]].groupby(feature).sum()
			feature_final = pd.concat([feature_a,feature_b],axis=1)
			feature_final.rename(columns = {0:'total'},inplace=True)
			# check if has missing value in dataframe
			# Data preprocessing with missing value
			if missing_exist:
				if ((t_type == 'c')):
					missing_df = feature_final.loc['missing':'missing']
					feature_final = feature_final[feature_final.index != 'missing']
					missing_temp_df = temp_df[temp_df[feature]=='missing']
					missing_temp_df = pd.DataFrame(missing_temp_df.groupby(feature).size())
					missing_temp_df.rename(columns={0:target},inplace=True)
					missing_over_size = temp_df[temp_df[feature]=='missing'][temp_df[target]==1].shape[0]
					missing_temp_df[target]['missing'] = missing_over_size
					non_missing_temp_df = temp_df[temp_df[feature]!='missing']
					non_missing_temp_df.index = non_missing_temp_df[feature]
					
					Q1 = non_missing_temp_df[feature].astype(float).describe()['25%']
					Q3 = non_missing_temp_df[feature].astype(float).describe()['75%']
					min_value = non_missing_temp_df.index.min()
					max_value = non_missing_temp_df.index.max()
					bins_list = [min_value-0.0001]
					temp_value = min_value
					F_D = 2*(Q3-Q1)/math.pow(non_missing_temp_df.shape[0],1/3)
					if F_D == 0:
						print('since too many values in one bin, so we start use cut method!')
						print('='*60)
						try:
							result = draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type,cut_num=cut_num,cut_start=cut_start)
							return result
						except:
							return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
					while temp_value < max_value:
						temp_value += F_D
						bins_list.append(temp_value)
					index_list = list(pd.cut(feature_final.index, bins = bins_list))
					feature_final.index=index_list
					feature_final.index.name=feature
					feature_final = feature_final.groupby(feature_final.index).sum()
					feature_final = feature_final.reindex(list(OrderedSet(index_list)))
			# Data preprocessing w/o missing value
			else:
				if ((t_type == 'c')):
					non_missing_temp_df = temp_df.copy()
					non_missing_temp_df.index = non_missing_temp_df[feature]
					Q1 = non_missing_temp_df[feature].astype(float).describe()['25%']
					Q3 = non_missing_temp_df[feature].astype(float).describe()['75%']
					min_value = non_missing_temp_df.index.min()
					max_value = non_missing_temp_df.index.max()
					bins_list = [min_value-0.0001]
					temp_value = min_value
					F_D = 2*(Q3-Q1)/math.pow(non_missing_temp_df.shape[0],1/3)
					if F_D == 0:
						print('since too many values in one bin, so we start use cut method!')
						print('='*60)
						try:
							result = draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type,cut_num=cut_num,cut_start=cut_start)
							return result
						except:
							return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
					while temp_value < max_value:
						temp_value += F_D
						bins_list.append(temp_value)
					index_list = list(pd.cut(feature_final.index, bins = bins_list))
					feature_final.index=index_list
					feature_final.index.name=feature
					feature_final = feature_final.groupby(feature_final.index).sum()
					feature_final = feature_final.reindex(list(OrderedSet(index_list)))
					feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
			feature_final.reset_index(inplace=True)
			feature_final.rename(columns={'index':feature},inplace=True)
			feature_final[target+'_rate'] = feature_final[target]/feature_final['total']
		if ((t_type == 'c') & (cut == 'qcut') & (target != None)):
			try:
				feature_final = draw.numerical_binning_qcut_for_draw(draw.numerical_binning_qcut(X,Y,n=bins,cut_way=cut_way,text_print=text_print),\
                                                            X,Y,missing_exist=missing_exist)
			except:
				print('since too many values in one bin, so we start use cut method!')
				print('='*60)
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
		elif ((t_type == 'c') & (cut == 'cut')& (target != None)):
			try:
				feature_final = draw.numerical_binning_qcut_for_draw(draw.numerical_binning_cut(X,Y,n=bins,cut_way=cut_way,text_print=True),\
                                                            X,Y,missing_exist=missing_exist)
			except:
				print('since too many values in one bin, so we start use cut method!')
				print('='*60)
				print('start using basic bins cut method.')
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
		elif ((t_type == 'c') & (cut == 'dtree')& (target != None)):
			try:
				feature_final = draw.DecisionTreeBinning(data,feature,target,max_depth=tree_depth,missing_exist=False)
			except:
				print('since too many values in one bin, so we start use cut method!')
				print('='*60)
				print('start using basic bins cut method.')
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
		elif((t_type == 'c') & (cut == 'woe')& (target != None)):
			try:
				feature_final = draw.woe_binning_cut_for_draw(X,Y,woe)
			except:
				print('since too many values in one bin, so we start use cut method!')
				print('='*60)
				print('start using basic bins cut method.')
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
		if (cut_num != None) & (cut_start == 'start') & (t_type == 'c'):
			try:
				new_left = feature_final[feature_final['total']<cut_num][feature].iloc[0].left
				new_right = feature_final[feature_final['total']>cut_num][feature].iloc[0].left
			except:
				print('data cannot be cut from head.')
				print('='*60)
				print('start using basic bins cut method.')
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
			new_total = feature_final.iloc[:feature_final[feature_final['total']>=cut_num].index[0]].total.sum()
			new_is_over = feature_final.iloc[:feature_final[feature_final['total']>=cut_num].index[0]][target].sum()
			new_tmp_df = pd.DataFrame({feature:[pd.Interval(left=new_left, right=new_right)],'total':[new_total],\
						 target:[new_is_over],target+'_rate':[new_is_over/new_total]})
			feature_final = pd.concat([new_tmp_df,feature_final.iloc[feature_final[feature_final['total']>cut_num].index[0]:]],\
									  axis=0).reset_index()
			feature_final = feature_final.drop('index',axis=1)
		elif (cut_num != None) & (cut_start == 'tail') & (t_type == 'c'):
			try:
				new_left = feature_final[feature_final['total']>=cut_num][feature].iloc[-1].right
				new_right = feature_final[feature_final['total']<cut_num][feature].iloc[-1].right
			except:
				print('data cannot be cut from tail.')
				print('='*60)
				print('start using basic bins cut method.')
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
			new_total = feature_final.iloc[feature_final[feature_final['total']>=cut_num].index[-1]+1:].total.sum()
			new_is_over = feature_final.iloc[feature_final[feature_final['total']>=cut_num].index[-1]+1:][target].sum()
			new_tmp_df = pd.DataFrame({feature:[pd.Interval(left=new_left, right=new_right)],'total':[new_total],\
						 target:[new_is_over],target+'_rate':[new_is_over/new_total]})
			feature_final = pd.concat([feature_final.iloc[:feature_final[feature_final['total']>cut_num].index[-1]+1],new_tmp_df],\
									  axis=0).reset_index()
			feature_final = feature_final.drop('index',axis=1)
		elif (cut_num != None) & (cut_start == 'both') & (t_type == 'c'):
			try:
				new_left = feature_final[feature_final['total']<cut_num][feature].iloc[0].left
				new_right = feature_final[feature_final['total']>cut_num][feature].iloc[0].left
			except:
				print('data cannot be cut from head.')
				print('='*60)
				print('start using basic bins cut method.')
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
			new_total = feature_final.iloc[:feature_final[feature_final['total']>=cut_num].index[0]].total.sum()
			new_is_over = feature_final.iloc[:feature_final[feature_final['total']>=cut_num].index[0]][target].sum()
			new_tmp_df = pd.DataFrame({feature:[pd.Interval(left=new_left, right=new_right)],'total':[new_total],\
						 target:[new_is_over],target+'_rate':[new_is_over/new_total]})
			feature_final = pd.concat([new_tmp_df,feature_final.iloc[feature_final[feature_final['total']>cut_num].index[0]:]],\
									  axis=0).reset_index()
			feature_final = feature_final.drop('index',axis=1)
			try:
				new_left = feature_final[feature_final['total']>=cut_num][feature].iloc[-1].right
				new_right = feature_final[feature_final['total']<cut_num][feature].iloc[-1].right
			except:
				print('data cannot be cut from head.')
				print('='*60)
				print('start using basic bins cut method.')
				return draw.bivar(data=data, feature=feature,target=target,bins=bins,cut='none',t_type=t_type)
			new_total = feature_final.iloc[feature_final[feature_final['total']>=cut_num].index[-1]+1:].total.sum()
			new_is_over = feature_final.iloc[feature_final[feature_final['total']>=cut_num].index[-1]+1:][target].sum()
			new_tmp_df = pd.DataFrame({feature:[pd.Interval(left=new_left, right=new_right)],'total':[new_total],\
						 target:[new_is_over],target+'_rate':[new_is_over/new_total]})
			feature_final = pd.concat([feature_final.iloc[:feature_final[feature_final['total']>cut_num].index[-1]+1],new_tmp_df],\
									  axis=0).reset_index()
			feature_final = feature_final.drop('index',axis=1)
		if (missing_exist) & (cut in ['none','F-D','custom']) & (t_type == 'c'):
			missing_df[target+'_rate'] = missing_df[target]/missing_df['total']
			missing_df = missing_df.reset_index()
			feature_final = pd.concat([feature_final,missing_df],axis=0)
			feature_final = feature_final.reset_index()
			feature_final = feature_final.drop('index',axis=1)
		if type(feature_final)!=pd.core.frame.DataFrame:
			return 'There are less than 1 values in {}.'.format(feature)
		if d_reorder:
			feature_final.sort_values(['total',target],ascending=[False,False],inplace=True)
		#Drawing bivar graph
		attr = []
		for c in feature_final[feature]:
			attr.append(str(c))
		if target != None:
			v1 = list(feature_final[target].values)
			v2 = [x - y for x, y in zip(feature_final['total'].tolist(), feature_final[target].tolist())]
			v3 = list(np.round(feature_final[target+'_rate'].values*100,2))
			yaxis_max = np.max(v3)
			bar = Bar(width=1200, height=600,title=feature,background_color='#ffffff')
			bar.add(target+"数量", attr, v1,is_stack=True,is_datazoom_show=True,datazoom_type='both',datazoom_range=[0,100],
					label_color=['#00FF7F','#0081FF','#FF007C'],is_visualmap=True, visual_type='size',visual_range=[0,yaxis_max],
					visual_range_size=[10,10],is_yaxislabel_align=False,visual_dimension=1,tooltip_text_color='#000000',
					label_emphasis_textcolor='#000000',is_more_utils=True)
			bar.add('non-'+target+"数量",attr,v2,is_stack=True,label_emphasis_textcolor='#000000')
			overlap = Overlap()
			overlap.add(bar)
			if draw_type=='line':
				line = Line()
				line.add(target, attr, v3, yaxis_formatter="%", yaxis_min=0,yaxis_max=1.2*yaxis_max,label_emphasis_textcolor='#000000',line_width=3)
				overlap.add(line, yaxis_index=1, is_add_yaxis=True)
			if draw_type=='scatter':
				scatter = Scatter()
				scatter.add(target, attr, v3, yaxis_formatter="%", yaxis_min=0,yaxis_max=1.2*yaxis_max,label_emphasis_textcolor='#000000')
				overlap.add(scatter, yaxis_index=1, is_add_yaxis=True)
		else:
			bar = Bar(width=1200, height=600,title=feature,background_color='#ffffff')
			v1 = list(feature_final['total'].values)
			bar.add("数量", attr, v1,is_stack=True,is_datazoom_show=True,datazoom_type='both',datazoom_range=[0,100],
					label_color=['#0081FF','#FF007C'],is_visualmap=True, visual_type='size',
					visual_range_size=[10,10],is_yaxislabel_align=False,visual_dimension=1,tooltip_text_color='#000000',
					label_emphasis_textcolor='#000000',is_more_utils=True)
			overlap = Overlap()
			overlap.add(bar)
		if save==None:
			return overlap
		elif save!= None:
			return overlap.render(path=path+'{}.{}'.format(feature,save))
def test_scatter_draw_picture():
    # draw pyecharts
    scatter = Scatter("散点图示例")
    v1, v2 = scatter.draw("../images/pyecharts-0.png")
    scatter.add("pyecharts", v1, v2, is_random=True)
    scatter.render()

    # draw love
    scatter = Scatter("散点图示例", width=800, height=480)
    v1, v2 = scatter.draw("../images/love.png")
    scatter.add("Love", v1, v2)
    scatter.render()

    # draw a hot red bra
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2)
    scatter.render()

    # draw a sexy black bra
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2, label_color=["#000"])
    scatter.render()
Example #34
0
                    help='only report R&D Center department',
                    action='store_true')
args = parser.parse_args()

rd_departments_list = [
    '嵌入部', '系统部', '软件部', '项目管理部', '硬件部', '结构部', '测试部', '研发中心'
]

page = Page()

if args.only_rd:
    subtitle = '创世科技研发中心2017年度(2016.12.25-2017.12.24)统计数据'
else:
    subtitle = '创世科技2017年度(2016.12.25-2017.12.24)统计数据'

later_charts = Scatter(title='迟到', subtitle=subtitle, width=1920, height=1080)
overtime_charts = Scatter(title='加班',
                          subtitle=subtitle,
                          width=1920,
                          height=1080)
remedies_bar = Bar(title='补签', subtitle=subtitle, width=1920, height=1080)

sheet = xlrd.open_workbook(args.inputfile).sheets()[0]

name_list = []
remedies_count_list = []

for index in range(1, sheet.nrows):
    items = sheet.row(index)

    name = items[0].value
Example #35
0
def test_scatter_markline_coords():
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2, mark_line_coords=[[10, 10], [30, 30]])
    assert '"coord": [' in scatter._repr_html_()
Example #36
0
def create_charts():
    page = Page()

    style = Style(width=WIDTH, height=HEIGHT)

    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [10, 20, 30, 40, 50, 60]
    chart = Scatter("散点图-双数值轴", **style.init_style)
    chart.add("A", v1, v2)
    chart.add("B", v1[::-1], v2)
    page.add(chart)

    chart = Scatter("散点图-x轴类目轴", **style.init_style)
    chart.add("A", ["a", "b", "c", "d", "e", "f"], v2)
    chart.add("B", ["a", "b", "c", "d", "e", "f"],
              v1[::-1],
              xaxis_type="category")
    page.add(chart)

    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [10, 20, 30, 40, 50, 60]
    chart = Scatter("散点图-视觉通道(颜色)", **style.init_style)
    chart.add("A", v1, v2)
    chart.add("B", v1[::-1], v2, is_visualmap=True)
    page.add(chart)

    chart = Scatter("散点图-视觉通道(大小)", **style.init_style)
    chart.add("A", v1, v2)
    chart.add("B",
              v1[::-1],
              v2,
              is_visualmap=True,
              visual_type='size',
              visual_range_size=[20, 80])
    page.add(chart)

    data = [[28604, 77, 17096869], [31163, 77.4, 27662440],
            [1516, 68, 1154605773], [13670, 74.7, 10582082],
            [28599, 75, 4986705], [29476, 77.1, 56943299],
            [31476, 75.4, 78958237], [28666, 78.1, 254830],
            [1777, 57.7, 870601776], [29550, 79.1, 122249285],
            [2076, 67.9, 20194354], [12087, 72, 42972254],
            [24021, 75.4, 3397534], [43296, 76.8, 4240375],
            [10088, 70.8, 38195258], [19349, 69.6, 147568552],
            [10670, 67.3, 53994605], [26424, 75.7, 57110117],
            [37062, 75.4, 252847810]]

    x_lst = [v[0] for v in data]
    y_lst = [v[1] for v in data]
    extra_data = [v[2] for v in data]
    chart = Scatter("散点图-视觉通道(第三维度数据)", **style.init_style)
    chart.add("scatter",
              x_lst,
              y_lst,
              extra_data=extra_data,
              is_visualmap=True,
              visual_dimension=2,
              visual_orient='horizontal',
              visual_type='size',
              visual_range=[254830, 1154605773],
              visual_text_color='#000')
    page.add(chart)

    return page
Example #37
0
def test_scatter_draw_love():
    scatter = Scatter("散点图示例", width=800, height=480)
    v1, v2 = scatter.draw("../images/love.png")
    scatter.add("Love", v1, v2)
    scatter.render()
Example #38
0
pie = Pie("服装占比",title_pos='left',width=800)
pie.add("", attr, v1, is_label_show=True,radius=[30,75])
pie.render('pie.html')

#label_text_color字体颜色
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "鞋", "袜子"]
v1 = [110, 112, 133, 100, 108, 120]
pie = Pie("饼图-服装占比", title_pos='center')
pie.add("服饰",attr,v1,radius=[40, 75],
    label_text_color='red',is_label_show=True,legend_orient="vertical",legend_pos="left")
pie.render('pie.html')

# # # # # #散点图
from pyecharts import Scatter
iris = pd.read_csv('iris.csv')
scatter = Scatter('鸢尾花花瓣宽度和长度关系图')
scatter.add("setosa", iris.Petal_Width[iris.Species=='setosa'], iris.Petal_Length[iris.Species=='setosa'],
            symbol_size = 8, mark_point_symbol='arrow')
scatter.add("versicolor", iris.Petal_Width[iris.Species=='versicolor'], iris.Petal_Length[iris.Species=='versicolor'],
            symbol_size =10)
scatter.add("virginica", iris.Petal_Width[iris.Species=='virginica'], iris.Petal_Length[iris.Species=='virginica'],
            symbol_size =12)
scatter.render('iris.html')

# # # # # #折线图
# 读取数据
GDP_data = pd.read_excel('国民经济核算季度数据.xlsx')
# 选择部分数据
# mark_point_symbol 指定标签的形状
# mark_point_textcolor 指定标签的字体颜色
# mark_point_symbolsize 指定标记标记的大小
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()
Example #40
0
def scatter(bq,output):
	page=Page()
	page.height=900
	c=0
	fc=14   #fontsize
	if len(bq.keys())>4:
		fig=plt.figure(figsize=(24,10))
	else:
		fig=plt.figure(figsize=(24,5))
	#fig.subplots_adjust(wspace=0.5,hspace=0.5)
	#iden the fig shape
	#2 col situation
	if len(bq.keys())%2==0 and len(bq.keys())%3!=0 and len(bq.keys())%4!=0:
		all_col=2
	elif len(bq.keys())%3==0:
		all_col=3
	elif len(bq.keys())%4==0:
		all_col=4
	#iden shape end
	if int(len(bq.keys())%all_col)==0:
		row=int(len(bq.keys())/all_col)
	else:
		row=int(len(bq.keys())/all_col)+1
	for key1 in bq:
		cp=[] #completeness
		ct=[] #contamination
		a=sorted(bq[key1]['completeness'].items(),key=lambda x:x[1],reverse=True) #sort keys  according to their values
		#c=0
		for e in a:
			cp.append(bq[key1]['completeness'][e[0]])
			ct.append(bq[key1]['contamination'][e[0]])
		c+=1
		x=range(1,len(cp)+1)
		##### literature  figure part #####
		#fig.subplots_adjust(wspace=0.3,hspace=0.6)
		if max(ct)>100:
			ax1=fig.add_subplot(row,all_col,c)
                        ax1.set_xlabel(key1,color='black',fontsize=fc)
                        ax1.set_ylabel('Completeness',fontsize=fc+1)
                        ax1.scatter(x,cp,color='black',label='Completeness')
                        ax2=ax1.twinx()
                        ax2.scatter(x,ct,color='red',label='Contamination')
                        ax2.set_ylabel('Contamination',color='black',fontsize=fc+1)
                        ax2.tick_params(axis='y',colors='red')
                        ax2.spines['right'].set_color('red')
			if max(ct)%10==0:
				max_10_ct=max(ct)
			else:
				max_10_ct=(10-max(ct)%10)+max(ct)
			ax2.axis([min(x),max(x),0,max_10_ct])
			ax1.axis([min(x),max(x),0,max_10_ct])
			#ax2.axis([min(x),max(x),0,max(cp)])
		else:
			ax1=fig.add_subplot(row,all_col,c)
			ax1.set_xlabel(key1,color='black',fontsize=fc)
			ax1.set_ylabel('Completeness',fontsize=fc+1)
			ax1.scatter(x,cp,color='black',label='Completeness')
			ax2=ax1.twinx()
			ax2.scatter(x,ct,color='red',label='Contamination')
			ax2.set_ylabel('Contamination',color='black',fontsize=fc+1)
			ax2.tick_params(axis='y',colors='red')
			ax2.spines['right'].set_color('red')
			ax2.axis([min(x),max(x),0,100])
		#plt.savefig(output+'/3.scatter.png')				
		##### literature  figure end  #####

		#x=range(1,len(cp)+1)
		#grid=Grid()
		#overlap = Overlap()
		#scatter = Scatter()
		#scatter2 = Scatter(key1)
		if c%2==0:
			#2
			if c%4!=0:
				overlap2 = Overlap()
		                scatter3 = Scatter()
				scatter3.add("Completeness",x,cp,yaxis_label_textcolor='red',yaxis_line_color='red',xaxis_type='category',xaxis_max=max(x),legend_pos="40%",legend_orient="vertical")
				scatter4 = Scatter(key1,title_pos="25%")
				scatter4.add('Contamination',x,ct,xaxis_type='category',xaxis_max=max(x),legend_pos="40%",legend_orient="vertical")
				overlap2.add(scatter4)
		                overlap2.add(scatter3)
			#4
			else:
				overlap4 = Overlap()
                                scatter7 = Scatter()
                                scatter7.add("Completeness",x,cp,yaxis_label_textcolor='red',yaxis_line_color='red',xaxis_type='category',xaxis_max=max(x),legend_pos="90%",legend_orient="vertical")
                                scatter8 = Scatter(key1,title_pos="75%")
                                scatter8.add('Contamination',x,ct,xaxis_type='category',xaxis_max=max(x),legend_pos="90%",legend_orient="vertical")
                                overlap4.add(scatter8)
                                overlap4.add(scatter7)
			#overlap2.render(output+'/3.scatter_o2.html')
		else:
			#1
			if (c+1)%4!=0:
				overlap = Overlap()
		                scatter = Scatter()
				scatter.add("Completeness",x,cp,yaxis_label_textcolor='red',yaxis_line_color='red',xaxis_type='category',xaxis_max=max(x),legend_pos="15%",legend_orient="vertical")
	                        scatter2 = Scatter(key1)
                        	scatter2.add('Contamination',x,ct,xaxis_type='category',xaxis_max=max(x),legend_pos="15%",legend_orient="vertical")
				overlap.add(scatter2)
				overlap.add(scatter)
			#3
			else:
				overlap3 = Overlap()
                                scatter5= Scatter()
                                scatter5.add("Completeness",x,cp,yaxis_label_textcolor='red',yaxis_line_color='red',xaxis_type='category',xaxis_max=max(x),legend_pos="65%",legend_orient="vertical")
                                scatter6= Scatter(key1,title_pos="50%")
                                scatter6.add('Contamination',x,ct,xaxis_type='category',xaxis_max=max(x),legend_pos="65%",legend_orient="vertical")
                                overlap3.add(scatter6)
                                overlap3.add(scatter5)
			#overlap.render(output+'/3.scatter_o1.html')
		'''
		if c==len(bq.keys()) and c%2!=0:
			grid=Grid()
                        grid.add(overlap,grid_left="60%")
			page.add(grid)
			continue
		'''
		if c%2==0:
			#2
			if c%4!=0:
				grid.add(overlap2,grid_left="30%",grid_width=250)
			#4
			else:
				grid.add(overlap4,grid_left="80%",grid_width=200)
                                page.add(grid)
			#grid.render(output+'/3.scatter.html')
			#page.render(output+'/3.scatter.html')
		else:
			#3
			if (c+1)%4==0:
				grid.add(overlap3, grid_left="55%",grid_width=250)
			#1
			else:
				grid=Grid()
				grid.width=1500
				grid.height=300
				grid.add(overlap,grid_left="5%",grid_width=250)
			#grid.render(output+'/3.scatter.html')
                        #page.render(output+'/3.scatter.html')
                        #exit()
		if c==len(bq.keys()) and c%4!=0:
			page.add(grid)
	page.render(output+'/3_scatter.html')
	#fig.subplots_adjust(wspace=0.3,hspace=0.3)
	#ax1.legend(loc='center', bbox_to_anchor=(-1.3, 3.8),ncol=5,fontsize=20)
	fig.subplots_adjust(wspace=0.5,hspace=0.4)
	plt.savefig(output+'/3.scatter.png')
Example #41
0
def test_scatter_draw_sexy_black_bra():
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2, label_color=["#000"])
    scatter.render()
def test_scatter_xaxis_type():
    # xAxis type 'value'
    v1 = [10, 20, 30, 40, 50, 60]
    v2 = [10, 20, 30, 40, 50, 60]
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2)
    assert '"type": "value"' in scatter._repr_html_()
    assert '"type": "category"' not in scatter._repr_html_()
    scatter.render()

    # xAxis type 'category'
    scatter = Scatter("散点图示例")
    scatter.add("A", ["a", "b", "c", "d", "e", "f"], v2)
    scatter.add("B", ["a", "b", "c", "d", "e", "f"],
                v1[::-1],
                xaxis_type="category")
    assert '"type": "category"' in scatter._repr_html_()
    scatter.render()
Example #43
0
def test_scatter_visualmap_default():
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2, is_visualmap=True)
    scatter.render()
Example #44
0
def test_scatter_visualmap_default():
    scatter = Scatter("散点图示例")
    scatter.add("A", v1, v2)
    scatter.add("B", v1[::-1], v2, is_visualmap=True)
    scatter.render()
Example #45
0
def test_scatter_draw_love():
    scatter = Scatter("", width=800, height=480)
    scatter.draw("../images/love.png")
Example #46
0
def test_scatter_draw__hot_red_bra():
    scatter = Scatter("散点图示例", width=1000, height=480)
    v1, v2 = scatter.draw("../images/cup.png")
    scatter.add("Cup", v1, v2)
    scatter.render()
Example #47
0
def test_scatter_draw__hot_red_bra():
    scatter = Scatter("", width=1000, height=480)
    scatter.draw("../images/cup.png")
Example #48
0
'''

散点图

add

'''

from pyecharts import Scatter

x1 = [20, 13, 43, 53, 34, 89]
y1 = [10, 32, 43, 13, 54, 87]

x2 = [12, 24, 41, 33, 54, 19]
y2 = [13, 39, 31, 43, 24, 37]
scatter = Scatter('散点图')
scatter.add('A', x1, y1)
scatter.add('B',
            x2,
            y2,
            is_visualmap=True,
            visual_type='size',
            visual_range_size=[10, 80])
scatter.render('a.html')
Example #49
0
def test_scatter_draw_pyecharts():
    scatter = Scatter("散点图示例")
    v1, v2 = scatter.draw("../images/pyecharts-0.png")
    scatter.add("pyecharts", v1, v2, is_random=True)
    scatter.render()