Beispiel #1
0
def bar_base_with_custom_background_image():
    obj_bar = Bar(
        init_opts=opts.InitOpts(
            bg_color={
                "type":"pattern",
                "image":JsCode("img"),
                "repeat":"no-repeat"
            }
        )
    )
    obj_bar.add_xaxis(Faker.choose())
    obj_bar.add_yaxis("A", Faker.values())
    obj_bar.add_yaxis("B", Faker.values())
    obj_bar.set_global_opts(
        title_opts = opts.TitleOpts(
            title = "Bar-背景图基本示例",
            subtitle = "副标题",
            # 设置标题为白色
            title_textstyle_opts=opts.TextStyleOpts(color="white")
        )
    )
    obj_bar.add_js_funcs(
        "var img = new Image(); img.src = 'https://s2.ax1x.com/2019/07/08/ZsS0fK.jpg';"
    )
    return obj_bar
    def show_dlt(self):
        red_balls = []
        blue_balls = []
        with open(self.input_file, 'r') as f:
            for i in range(Config.PAGES * Config.ITEMS_PER_PAGE):
                one_line_data = f.readline().strip()
                # print(one_line_data)
                red_balls.extend([
                    int(one_line_data[15 + (2 * i):15 + (2 * (i + 1))])
                    for i in range(5)
                ])
                blue_balls.append(int(one_line_data[-4:-2]))
                blue_balls.append(int(one_line_data[-2:]))

        red_counter = Counter(red_balls)
        blue_counter = Counter(blue_balls)
        # print(red_balls)
        # print(blue_balls)
        # print(red_counter)
        # print(blue_counter)
        # print(red_counter.most_common())
        # print(blue_counter.most_common())
        red_dict = {}
        blue_dict = {}
        for i in red_counter.most_common():
            red_dict['{}'.format(i[0])] = i[1]

        for j in blue_counter.most_common():
            blue_dict['{}'.format(j[0])] = j[1]

        print(red_dict)
        print(blue_dict)

        red_list = sorted(red_counter.most_common(),
                          key=lambda number: number[0])
        blue_list = sorted(blue_counter.most_common(),
                           key=lambda number: number[0])
        print(blue_list)
        print(red_list)

        # 红球图表添加
        red_bar = Bar()
        red_x = ['{}'.format(str(x[0])) for x in red_list]
        red_y = ['{}'.format(str(x[1])) for x in red_list]
        red_bar.add_xaxis(red_x)
        red_bar.add_yaxis('红色球出现的次数', red_y)
        # 篮球图表添加
        blue_bar = Bar()
        blue_x = ['{}'.format(str(x[0])) for x in blue_list]
        blue_y = ['{}'.format(str(x[1])) for x in blue_list]
        blue_bar.add_xaxis(blue_x)
        blue_bar.add_yaxis('蓝色球出现的次数',
                           blue_y,
                           itemstyle_opts=opts.ItemStyleOpts(color='blue'))

        page = Page(page_title='大乐透数据分析', interval=3)
        page.add(red_bar)
        page.add(blue_bar)

        page.render(self.output_file)
Beispiel #3
0
def plot_data(condition,title):
    #distinct删除重复值
    table_names = pd.read_sql(
        "select name from sqlite_master where type='table' order by name",engine).values
    if 'sqlite_sequence' in table_names:
        table_names = table_names[:-1]
    all_tables = table_names
    temp = None
    n = 1
    for table in all_tables[:100]:

        sql=f"select distinct * from '{table[0]}' where trade_date>'20190101' and "+ condition
        data=pd.read_sql(sql,engine)
        print(f"第{n}/{len(all_tables[:100])}:{table[0]}已筛选!")
        if temp is None:
            temp = data
        else:
            temp = pd.concat([data, temp], axis=0)
        n += 1
    count_=temp.groupby('trade_date')['ts_code'].count()
    # print(count_)
    attr=count_.index.values.tolist()
    v1=count_.values.tolist()

    bar=Bar()
    # # bar= BAR(title)
    bar.add_xaxis(attr)
    bar.add_yaxis('',v1)
    # # bar.add('',attr,v1,is_splitline_show=False,is_datazoom_show=True,linewidth=2)
    # bar.render()

    bar.render(title+'.html')
 def bar(self,df,legend,title,path):
     '''
     柱状图
     :param df: 要操作的数据
     :param legend: 图例
     :param title: 报表标题
     :param path: 保存路径
     :return:
     '''
     tmp = df.value_counts()
     x = list(tmp.index)
     y = list(tmp)
     bar = Bar()
     bar.add_xaxis(x)
     bar.add_yaxis(legend, y, category_gap="60%")
     bar.set_series_opts(itemstyle_opts={
         "normal": {
             "color": utils.JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                         offset: 0,
                         color: 'rgba(0, 244, 255, 1)'
                     }, {
                         offset: 1,
                         color: 'rgba(0, 77, 167, 1)'
                     }], false)"""),
             "barBorderRadius": [30, 30, 30, 30],
             "shadowColor": 'rgb(0, 160, 221)',
         }})
     bar.set_global_opts(title_opts=opts.TitleOpts(title=title))
     bar.render(path + '/' + title + '.html')
Beispiel #5
0
def main():
    urls = [
        "http://www.weather.com.cn/textFC/hz.shtml",
        "http://www.weather.com.cn/textFC/hb.shtml",
        "http://www.weather.com.cn/textFC/hn.shtml",
        "http://www.weather.com.cn/textFC/hd.shtml",
        "http://www.weather.com.cn/textFC/db.shtml",
        "http://www.weather.com.cn/textFC/xb.shtml",
        "http://www.weather.com.cn/textFC/xn.shtml",
        "http://www.weather.com.cn/textFC/gat.shtml",
    ]

    for url in urls:
        parse_page(url)

    ALL_DATA.sort(key=lambda data: data['max_temp'], reverse=True)
    data = ALL_DATA[0:10]
    print(data)
    cities = list(map(lambda x: x['city'], data))
    temp_max = list(map(lambda x: x['max_temp'], data))

    chart = Bar()
    chart.add_xaxis(cities)
    chart.add_yaxis('气温', temp_max)
    chart.render('temperature.html')
Beispiel #6
0
def main():
    urls = [
        '华北地区天气预报.html',
        '东北地区天气预报.html',
        '华东地区天气预报.html',
        '华中地区天气预报.html',
        '华南地区天气预报.html',
        '西北地区天气预报.html',
        '西南地区天气预报.html',
        '港澳台地区天气预报.html',
    ]
    for url in urls:
        parse_page(url)
    # 分析数据
    # 根据最低气温进行排序
    ALL_DATA.sort(key=lambda data: data['min_temp'])
    # print(ALL_DATA)
    data = ALL_DATA[0:10]

    cities = map(lambda x: x['city'], data)
    min_temp = map(lambda x: x['min_temp'], data)

    bar = Bar()
    bar.add_xaxis(list(cities))
    bar.add_yaxis("今日中国最低温度", list(min_temp))
    bar.render("mycharts_local.html")
Beispiel #7
0
def chart_by_one_ver(by_type, pro_id, item, title, L=None):
    """
    生成项目特定版本下的不同分类的bug分布图表
    :param by_type: 分类
    :param pro_id: 项目标识
    :param L: 资源类别名称、资源bug数量组成的列表
    :param item: 图表图示
    :param title: 图表title
    :return: html格式的图表
    """
    if L is None:
        L = []
        result = getdata.get_issue_by_one_ver(by_type, pro_id)
        for v in result:
            L.append(v)
        xaxis_data = []
        yaxis_data = []
    else:
        print('L的类型必须为None,请检查')
    if len(L) != 0:
        xaxis_data = [x[0] for x in L]
        yaxis_data = [x[1] for x in L]
        v_name = [x[2] for x in L][0]
        title = ''.join([title, v_name, '版本'])
        bar = Bar()
        bar.add_xaxis(xaxis_data)
        bar.add_yaxis(item, yaxis_data)
        bar.set_global_opts(title_opts=opts.TitleOpts(title=title))
        if os.path.exists(os.path.join(chart_path, '{}.html'.format(title))):
            os.remove(os.path.join(chart_path, '{}.html'.format(title)))
        bar.render(os.path.join(chart_path, '{}.html'.format(title)))
    else:
        print('没有数据可展示')
Beispiel #8
0
def create_avg_likes(df):
    # 筛选
    df = df[df['videos'] > 0]
    # 计算单个视频平均点赞数
    df.eval('result = likes/(videos*10000)', inplace=True)
    df['result'] = df['result'].round(decimals=1)
    df = df.sort_values('result', ascending=False)

    # 取TOP10
    attr = df['name'][0:10]
    v1 = ['%.1f' % (float(i)) for i in df['result'][0:10]]

    # 初始化配置
    bar = Bar(init_opts=opts.InitOpts(width="800px", height="400px"))
    # 添加数据
    bar.add_xaxis(list(reversed(attr.tolist())))
    bar.add_yaxis("", list(reversed(v1)))
    # 设置全局配置项,标题、工具箱(下载图片)、y轴分割线
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="抖音大V平均视频点赞数TOP10(万)",
                                  pos_left="center",
                                  pos_top="18"),
        toolbox_opts=opts.ToolboxOpts(is_show=True,
                                      feature={"saveAsImage": {}}),
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(
            is_show=True)))
    # 设置系列配置项
    bar.set_series_opts(label_opts=opts.LabelOpts(
        is_show=True, position="right", color="black"))
    # 翻转xy轴
    bar.reversal_axis()
    bar.render("抖音大V平均视频点赞数TOP10(万).html")
Beispiel #9
0
def create_abroad(df):
    # 筛选数据
    df = df[(df["country"] != "中国") & (df["country"] != "") &
            (df["country"] != "暂不设置") & (df["country"] != "China")]
    df1 = df.copy()
    # 数据替换
    df1["country"] = df1["country"].str.replace("United States",
                                                "美国").replace("大韩民国", "韩国")
    # 分组计数
    df_num = df1.groupby("country")["country"].agg(
        count="count").reset_index().sort_values(by="count", ascending=False)
    df_country = df_num[:8]["country"].values.tolist()
    df_count = df_num[:8]["count"].values.tolist()

    # 初始化配置
    bar = Bar(init_opts=opts.InitOpts(width="800px", height="400px"))
    bar.add_xaxis(df_country)
    bar.add_yaxis("", df_count)
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="抖音大V国外分布TOP10",
                                  pos_left="center",
                                  pos_top="18"),
        toolbox_opts=opts.ToolboxOpts(is_show=True,
                                      feature={"saveAsImage": {}}),
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(
            is_show=True)))
    bar.set_series_opts(
        label_opts=opts.LabelOpts(is_show=True, position="top", color="black"))
    bar.render("抖音大V国外分布TOP10.html")
Beispiel #10
0
def show(x: list, y: list, title: str = "键盘键入统计"):
    bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND))
    bar.add_xaxis(x)
    bar.add_yaxis("", y, category_gap="60%")
    bar.set_series_opts(
        itemstyle_opts={
            "normal": {
                "color":
                JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                offset: 0,
                color: 'rgba(0, 244, 255, 1)'
            }, {
                offset: 1,
                color: 'rgba(250, 177, 160, 1)'
            }], false)"""),
                "barBorderRadius": [30, 30, 30, 30],
                "shadowColor":
                "rgb(0, 160, 221)",
            }
        })
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title=title),
        datazoom_opts=[opts.DataZoomOpts(),
                       opts.DataZoomOpts(type_="inside")],
    )

    bar.load_javascript()
    bar.render_notebook()

    return Markup(bar.render_embed())
Beispiel #11
0
 def city_company_scale_chart(self):
     """前10城市的企业阶段"""
     city_company_scale = pd.crosstab(self.frame.city,
                                      self.frame.company_scale,
                                      margins=True).sort_values(
                                          by='All', ascending=False)[:10]
     city_company_scale = city_company_scale.drop('All',
                                                  axis=0).drop('All',
                                                               axis=1)
     html_path = os.path.join(
         create_or_get_directory(os.path.join('report', 'single')),
         'city_company_scale_chart.html')
     bar = Bar(init_opts=opts.InitOpts(width="60%"))
     bar.add_xaxis(list(city_company_scale.index))
     for i in range(len(list(city_company_scale.T.index))):
         bar.add_yaxis(city_company_scale.T.index[i],
                       [str(v) for v in city_company_scale.T.values[i]])
     bar.set_global_opts(
         legend_opts=opts.LegendOpts(is_show=False),
         xaxis_opts=opts.AxisOpts(
             axislabel_opts=opts.LabelOpts(rotate=-20, color='red')),
         yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
             color='red')),
     )
     bar.render(html_path)
     script_string = self.get_javascript_string(html_path)
     self.set_report_javascript(script_string, 'city_company_scale_chart')
     self.right_charts.append({
         'title': '前10城市的企业阶段',
         'name': 'city_company_scale_chart'
     })
 def generate_bar(self, x_axis, y_axis):
     bar = Bar(init_opts=opts.InitOpts(width="1280px", height="720px"))
     bar.add_xaxis(x_axis)
     bar.add_yaxis("", y_axis)
     bar.set_global_opts(xaxis_opts=opts.AxisOpts(
         axislabel_opts=opts.LabelOpts(rotate=10)))
     bar.render('bar.html')
    def get_plot_base(self, _df, title_name='数据分布', subtitle_name=''):
        '''
        plot line & bar info
        :param _df:
        :return:
        '''
        bar = Bar()
        line = Line()
        bar.set_global_opts(
            title_opts=opts.TitleOpts(title=title_name,
                                      subtitle=subtitle_name),
            yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
                formatter="{value}")),
            datazoom_opts=opts.DataZoomOpts(),  # 滑动条
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
                rotate=-15)),  # label旋转
            toolbox_opts=opts.ToolboxOpts(),
        )
        xaxis = list(map(str, _df.index))
        bar.add_xaxis(xaxis)
        line.add_xaxis(xaxis)
        for field in _df.columns:
            field = str(field)
            bar.add_yaxis(series_name=field,
                          yaxis_data=_df[field].to_list(),
                          is_selected=True)
            line.add_yaxis(series_name=field + self.series_name_add,
                           y_axis=_df[field].to_list(),
                           is_symbol_show=False)

        bar.overlap(line)
        return bar
Beispiel #14
0
def generte_bar_chart(title: str,
                      xaxis_caption: str,
                      range_groups: List[IntegerRangeCounterGroup],
                      bar_gap: int = 4) -> Bar:
    chart = Bar()
    chart.set_global_opts(
        title_opts=opts.TitleOpts(title=title),
        yaxis_opts=opts.AxisOpts(
            name='Samples',
            name_textstyle_opts=opts.global_options.TextStyleOpts(
                font_size=16)),
        xaxis_opts=opts.AxisOpts(
            name=xaxis_caption,
            name_textstyle_opts=opts.global_options.TextStyleOpts(
                font_size=16)))

    # Data (y axis)
    for range_group in range_groups:
        # Add values on the yaxis for each file type.
        # If the count is 0, replace it by None to avoid overlapped numbers in the chart.
        chart.add_yaxis(range_group.file_type,
                        range_group.counts,
                        category_gap=bar_gap,
                        stack="stack1")

    # Captions (x axis)
    chart.add_xaxis(range_groups[0].captions)
    chart.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    return chart
def bar(x, y):
    bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
    bar.add_xaxis(x)
    bar.add_yaxis("盈利", y)
    bar.set_global_opts(title_opts=opts.TitleOpts(title="380平台月盈利"))
    bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    bar.render('../graph/4.1平台月盈利.html')
Beispiel #16
0
def create_likes(df):
    # 排序,降序
    df = df.sort_values('likes', ascending=False)
    # 获取TOP10的数据
    attr = df['name'][0:10]
    v1 = [float('%.1f' % (float(i) / 100000000)) for i in df['likes'][0:10]]

    # 初始化配置
    bar = Bar(init_opts=opts.InitOpts(width="800px", height="400px"))
    # x轴数据
    bar.add_xaxis(list(reversed(attr.tolist())))
    # y轴数据
    bar.add_yaxis("", list(reversed(v1)))
    # 设置全局配置项,标题、工具箱(下载图片)、y轴分割线
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="抖音大V点赞数TOP10(亿)",
                                  pos_left="center",
                                  pos_top="18"),
        toolbox_opts=opts.ToolboxOpts(is_show=True,
                                      feature={"saveAsImage": {}}),
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(
            is_show=True)))
    # 设置系列配置项,标签样式
    bar.set_series_opts(label_opts=opts.LabelOpts(
        is_show=True, position="right", color="black"))
    bar.reversal_axis()
    bar.render("抖音大V点赞数TOP10(亿).html")
 def testBar(self):
     bar = Bar()
     bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
     bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
     bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
     bar.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))
     bar.render()
Beispiel #18
0
def create_cut_likes(df):
    # 将数据分段
    Bins = [
        0, 1000000, 5000000, 10000000, 25000000, 50000000, 100000000,
        5000000000
    ]
    Labels = [
        '0-100', '100-500', '500-1000', '1000-2500', '2500-5000', '5000-10000',
        '10000以上'
    ]
    len_stage = pd.cut(df['likes'], bins=Bins,
                       labels=Labels).value_counts().sort_index()
    # 获取数据
    attr = len_stage.index.tolist()
    v1 = len_stage.values.tolist()

    # 生成柱状图
    bar = Bar(init_opts=opts.InitOpts(width="800px", height="400px"))
    bar.add_xaxis(attr)
    bar.add_yaxis("", v1)
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="抖音大V点赞数分布情况(万)",
                                  pos_left="center",
                                  pos_top="18"),
        toolbox_opts=opts.ToolboxOpts(is_show=True,
                                      feature={"saveAsImage": {}}),
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(
            is_show=True)))
    bar.set_series_opts(
        label_opts=opts.LabelOpts(is_show=True, position="top", color="black"))
    bar.render("抖音大V点赞数分布情况(万).html")
Beispiel #19
0
    def __plot_con_notebook(self, split_n)->pyecharts.charts.Bar:
        """
        调用echarts,连续变量
        :param split_n:
        :return:
        """
        data = self.data[~np.isnan(self.X)]
        data.sort_values('X',inplace=True)

        X = data['X'].values
        y = data['y'].values
        max_x = max(X)
        min_x = min(X)

        freq,edge = np.histogram(X, np.linspace(min_x, max_x, split_n+1))
        freq = np.round(freq/data.shape[0] *100,2)
        # print(freq)
        # print(edge)
        bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        bar.load_javascript()

        bar.add_xaxis([('(' + str(int(edge[i])) + ' , ' + str(int((edge[i + 1]))) + ']') if i else (
                    '[' + str(int(edge[i])) + ' , ' + str(int((edge[i + 1]))) + ']') for i in range(len(edge) - 1)])

        bar.add_yaxis(self.var_name, freq.tolist(), category_gap=1, )
        bar.set_global_opts(title_opts=opts.TitleOpts(title=self.var_name),
                           datazoom_opts=opts.DataZoomOpts(is_show=True),
                           xaxis_opts=opts.AxisOpts(name_location='end', name='Groups'),
                           yaxis_opts=opts.AxisOpts(name_location='end', name='%'),
                           )
        bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
        return bar
Beispiel #20
0
    def draw_amount_bar(self):
        """
        画出股票的成交量和
        需要传入的数据是股票的["amount"
        :return:
        """
        # SC = "000021.SZ"
        Df_s1 = Read_One_Stock(self.SC).select_col("vol", "amount")
        length = Df_s1.shape[0]
        Df_s1.sort_values("trade_date", inplace=True)
        Df_s1.index = list(range(length))
        amount = np.array(Df_s1["amount"]).tolist()
        date = np.array(Df_s1["trade_date"], dtype=np.string_).tolist()

        bar = Bar()
        bar.set_global_opts(
            xaxis_opts=opts.AxisOpts(is_scale=True),
            yaxis_opts=opts.AxisOpts(
                is_scale=True,
                splitarea_opts=opts.SplitAreaOpts(
                    is_show=True,
                    areastyle_opts=opts.AreaStyleOpts(opacity=1)),
            ),
            datazoom_opts=[opts.DataZoomOpts()],
            title_opts=opts.TitleOpts(title="K-Line of {}".format(self.SC)))
        bar.add_xaxis(date)
        bar.add_yaxis("Amounts",
                      amount,
                      label_opts=opts.LabelOpts(is_show=False))

        bar.render("./Plots/{} Amount Bar Plot.html".format(self.SC))
Beispiel #21
0
def main():
    regions = ['hb', 'db', 'hd', 'hz', 'hn', 'xb', 'xn', 'gat']  # gat 的源码不规范
    for index, region in enumerate(regions):

        # 获取url
        url = URL.format(region)
        html = get_url(url)

        # 规则网页
        parse_html(html)

        # 数据可视化(数据分析)
        # 根据最低气温排序
        ALL_DATA.sort(key=lambda data: data['min_temp'])
        data = ALL_DATA[:10]  # 取前十个

        # 从列表元素(字典),获取值。
        # 方法1、遍历列表,获取列表的字典的值,再把这些值放入新列表;方法2、map
        # 全部城市
        citys = list(map(lambda x: x['city'], data))
        # 全部天气
        min_temps = list(map(lambda x: x['min_temp'], data))

        # pyechars
        bar = Bar()  # 初始化
        bar.add_xaxis(citys)
        bar.add_yaxis("城市", min_temps)
        # render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
        # 也可以传入路径参数,如 bar.render("mycharts.html")
        bar.render("mycharts.html")
Beispiel #22
0
def main():
    urls = [
        'http://www.weather.com.cn/textFC/hb.shtml',
        'http://www.weather.com.cn/textFC/db.shtml',
        'http://www.weather.com.cn/textFC/hd.shtml',
        'http://www.weather.com.cn/textFC/hz.shtml',
        'http://www.weather.com.cn/textFC/hn.shtml',
        'http://www.weather.com.cn/textFC/xb.shtml',
        'http://www.weather.com.cn/textFC/xn.shtml',
        'http://www.weather.com.cn/textFC/gat.shtml'
    ]
    for url in urls:
        parse_page(url)

    # 分析数据
    # 根据最低气温进行排序
    ALL_DATA.sort(key=lambda data: data['min_temp'])
    # print(ALL_DATA)
    data = ALL_DATA[0:10]

    cities = map(lambda x: x['city'], data)
    min_temp = map(lambda x: x['min_temp'], data)

    bar = Bar()
    bar.add_xaxis(list(cities))
    bar.add_yaxis("今日中国最低温度", list(min_temp))
    bar.render("mycharts.html")
Beispiel #23
0
def timeline_bar() -> Timeline:
    allBars = []
    # 共有 12 个Bar
    for (months, index) in zip(yearMonth, range(0, 11)):

        bar = Bar()
        bar.set_global_opts(title_opts=opts.TitleOpts("实验二-每月的购买力活跃程度"))
        bar.add_xaxis(['municipal'])
        for z in zip(list(np.array(rowData)[:, 0]),
                     list(np.array(rowData)[:, index + 1]),
                     list(np.array(rowBrand)[:, index + 1])):
            bar.add_yaxis(
                series_name=z[0] + z[2], yaxis_data=[z[1]]).set_global_opts(
                    title_opts=opts.TitleOpts("实验四-每月的销售最高Brand-city"),
                    legend_opts=opts.LegendOpts(
                        type_='scroll',
                        pos_left='50%',
                    ))
        allBars.append(bar)

    # 将allBars 与时间轴绑定
    tl = (Timeline().add_schema(play_interval=2000, is_auto_play=True))
    # bug:为什么后面的 bar 的x轴坐标会覆盖掉前面的bar呢
    for (itemTime, itemBar) in zip(yearMonth, allBars):
        tl.add(itemBar, itemTime)
    return tl
def gzu_major_satisfied():
    data1 = analysis_data.gzu_satisfied()
    data1 = data1.iloc[:, :5]
    print(data1)
    type_sas = {
        '综合满意度': 'all',
        '办学条件满意度': 'facility',
        '教学质量满意度': 'teaching',
        '就业满意度': 'job'
    }
    c = Bar()
    for a in type_sas:
        c.add_xaxis([str(x) for x in data1['major'].values])
        c.add_yaxis(a, [x for x in data1[type_sas[a]].values])
        c.set_global_opts(
            yaxis_opts=opts.AxisOpts(min_=3),
            xaxis_opts=opts.AxisOpts(
                axislabel_opts=opts.LabelOpts(font_size=10, interval=0)),
            datazoom_opts=opts.DataZoomOpts())
        c.set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markpoint_opts=opts.MarkPointOpts(data=[
                opts.MarkPointItem(type_="max", name="最大值"),
            ]),
            markline_opts=opts.MarkLineOpts(data=[
                opts.MarkLineItem(type_="average", name="平均值"),
            ]),
        )
    return c
Beispiel #25
0
def create_result_chart(data):

    instrulist = list(set(d.instrument for d in data))
    # x = ["{} P{}".format(localtime(d.upload_time).strftime("%Y-%m-%d %X"), d.platenum) for d in data]
    x = ["{} P{}".format(d.upload_time.strftime("%Y-%m-%d %X"), d.platenum) for d in data]

    # 均值直方图
    b = Bar(init_opts=opts.InitOpts(width='1900px'))
    b.add_xaxis(x)
    for instru in instrulist:
        mean = get_mean(data, instru)
        b.add_yaxis(instru, mean)
    b.set_global_opts(title_opts=opts.TitleOpts(title="结果mean图"))

    # sd折线图
    l = Line(init_opts=opts.InitOpts(width='1900px'))
    l.add_xaxis(x)
    for instru in instrulist:
        sd = get_sd(data, instru)
        l.add_yaxis(instru, sd, is_connect_nones=True)
    l.set_global_opts(title_opts=opts.TitleOpts(title="结果sd图", pos_top='48%'))

    grid = Grid(init_opts=opts.InitOpts(width='1900px'))
    grid.add(b, grid_opts=opts.GridOpts(pos_bottom='60%'))
    grid.add(l, grid_opts=opts.GridOpts(pos_top='60%'))
    
    return grid
Beispiel #26
0
 def paint_bar(self,
               x: list,
               collects: list,
               title: str,
               mark_point: bool = False):
     bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
     bar.add_xaxis(x)
     for collect in collects:
         for i, (name, unit, data) in enumerate(collect):
             bar.add_yaxis(f'{name}-单位:{unit}', data, yaxis_index=i)
             if i != 0:
                 bar.extend_axis(yaxis=opts.AxisOpts(
                     name='',
                     type_='value',
                     position='right',
                 ))
     bar.set_global_opts(title_opts=opts.TitleOpts(title=title,
                                                   pos_left='5%'),
                         legend_opts=opts.LegendOpts(pos_bottom='0'))
     bar.set_series_opts(
         label_opts=opts.LabelOpts(position='top'),
         tooltip_opts=opts.TooltipOpts(formatter=f'{{b}}年{{a}}:{{c}}'))
     if mark_point:
         bar.set_series_opts(
             markpoint_opts=opts.MarkPointOpts(data=[
                 opts.MarkPointItem(type_='max', name='最大值'),
                 opts.MarkPointItem(type_='min', name='最小值')
             ],
                                               symbol_size=80))
     return bar
Beispiel #27
0
def theme_macarons(make_new, tag):
    tl = Timeline(init_opts=opts.InitOpts(
        theme=ThemeType.MACARONS))  # theme=ThemeType.PURPLE_PASSION
    tl.add_schema(
        pos_bottom='-7px',
        is_auto_play=True,
        symbol_size=[20, 20],
        play_interval=2000,
    )
    for i in range(2015, 2020):
        bar = Bar()
        bar.add_xaxis(list(make_new.columns))
        bar.add_yaxis("",
                      list(make_new.loc[i, :].values),
                      label_opts=opts.LabelOpts(is_show=False))
        bar.set_colors([
            random.choice([
                'blue', 'rgba(100,255,0,0.8)', '#5793f3', '#007A99', 'yellow'
            ])
        ])
        bar.set_global_opts(
            xaxis_opts=opts.AxisOpts(name="", axislabel_opts={"rotate": 40}),
            title_opts=opts.TitleOpts("{}-{}指数".format(i, tag)))

        tl.add(bar, "{}年".format(str(i)))
    return tl
def main():
    urls = [
        'http://www.weather.com.cn/textFC/hb.shtml',
        'http://www.weather.com.cn/textFC/db.shtml',
        'http://www.weather.com.cn/textFC/hd.shtml',
        'http://www.weather.com.cn/textFC/hz.shtml',
        'http://www.weather.com.cn/textFC/hn.shtml',
        'http://www.weather.com.cn/textFC/xb.shtml',
        'http://www.weather.com.cn/textFC/xn.shtml',
        'http://www.weather.com.cn/textFC/gat.shtml'
    ]
    for url in urls:
        parse_page(url)

    # 数据分析 根据最低气温排序
    ALL_DATA.sort(key=lambda data: data["min_temp"])  # 通过key指定根据什么排序
    # data 是ALL_DATA列表中每一行的字典数据, 根据data["min_temp"]返回值排序

    data = ALL_DATA[0:10]  # 最低气温排前十的城市/区
    cities = list(map(lambda x: x['city'], data))
    temps = list(map(lambda x: x['min_temp'], data))
    chart = Bar()
    # 给这个图取名
    #chart.add(cities,temps,is_more_utils=True)
    chart.add_xaxis(cities)
    chart.add_yaxis("最低气温表", temps)
    chart.render('temperature.html')
def plot_echart(df, type='Bar', title=None, theme='dark'):
    '''
    数据可视化
    :param df: 数据表
    :param type: 图像类型
    :param title: 图像标题
    :return: chart
    '''
    label_x = df.columns[0]
    x = list(df[label_x])
    label_y = df.columns[-1]
    y = list(df[label_y])
    chart = Bar()

    if type == 'Bar':  # 绘制柱形图
        chart = Bar(opt.InitOpts(theme=theme))
        x = list(df[label_x])  # x轴
        y = list(df[df.columns[-1]])  # y轴
        chart.add_xaxis(x)
        chart.add_yaxis(label_y, y)

    elif type == 'Pie':  # 绘制饼图
        x = df[label_x]
        chart = (Pie().add(series_name=label_y,
                           data_pair=list(zip(list(x), y))))

    # 图像设置
    chart.set_global_opts(title_opts=opt.TitleOpts(title=title),
                          toolbox_opts=opt.ToolboxOpts(is_show=True),
                          legend_opts=opt.LegendOpts(pos_bottom=1))

    return chart
Beispiel #30
0
def bar_histogram():
    x = Faker.dogs + Faker.animal
    xlen = len(x)
    y = []
    for idx, item in enumerate(x):
        if idx <= xlen / 2:
            bar_item = opts.BarItem(
                    name=item,
                    value=(idx + 1) * 10,
                    itemstyle_opts=opts.ItemStyleOpts(color="#749f83")
                )
        else:
            bar_item = opts.BarItem(
                    name=item,
                    value=(xlen + 1 - idx) * 10,
                    itemstyle_opts=opts.ItemStyleOpts(color="#d48265"),
                )
        y.append(bar_item)

    obj_bar = Bar()
    obj_bar.add_xaxis(x)
    #直方图就是紧挨着的系列柱category_gap=0调节系列柱之间距离,
    # color=Faker.rand_color()因为上面设置了柱的颜色,这里只对图例legend的颜色起作用
    obj_bar.add_yaxis("series0", y, category_gap=0,color=Faker.rand_color())
    obj_bar.set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-直方图(颜色区分)", subtitle="副标题")
    )
    return obj_bar