Esempio n. 1
0
from pyecharts import options as opts

# 导入模块
from pyecharts.charts import Pie
# 导入theme
from pyecharts.globals import ThemeType

import pandas as pd

# 加载数据

data = pd.read_excel('./Python地区分校人数.xlsx')
print('data:\n', data)

# 绘制饼图
pie = Pie()
pie.add(
    series_name='分校人数',
    data_pair=data.values.tolist(),  #
    radius=[
        '50%',
        '75%'  # 内外半径 内径 外径
    ])

# 添加全局配置
pie.set_global_opts(
    title_opts=opts.TitleOpts(title='分校占比图', pos_left='center'),
    legend_opts=opts.LegendOpts(is_show=False),
)

# 添加系列配置
    # 建立柱状图
    bar_3 = (
        Bar()
            .add_xaxis(x)
            .add_yaxis('', y)
            .set_global_opts(
            title_opts=opts.TitleOpts(title='用户一周内各天领卷数量累计'),  # title
        )
    )

######################
    # 优惠卷类型比例
    v1=['折扣','满减']
    v2=list(offline[offline['Date_received'].notnull()]['is_manjian'].value_counts(True))

    pie_1=(
        Pie()
        .add("",[list(v) for v in zip(v1,v2)])
        .set_global_opts(title_opts={"text":"各类优惠卷数量占比饼图"})
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )

    path = './tmp/task2_output'
    if not os.path.exists(path):
        os.makedirs(path)
    # render会生成本地HTML文件,默认在当前目录生成render.html文件
    bar_1.render(path + '/bar_1.html')
    bar_2.render(path + '/bar_2.html')
    bar_3.render(path + '/bar_3.html')
    pie_1.render(path + '/pie_1.html')
def grid_test():
    Mode_pie = (
                Pie()
                .add("Mode",
                     df_mode.values.tolist(),
                     center=["12%", "35%"],
                     radius=["40%", "55%"],
                     label_opts=opts.LabelOpts(is_show=False, position="center")  )

                .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"])
                .set_global_opts(title_opts=opts.TitleOpts(title="Mode", pos_left="10%", pos_top="30%"),  
                                 legend_opts=opts.LegendOpts(orient="vertical", pos_left="0%", pos_top="10%")  )
                .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)")  )
               )

    Language_pie = (
                    Pie()
                    .add("Language",
                         df_Language.values.tolist(),
                         center=["32%", "35%"],
                         radius=["40%", "55%"],
                         label_opts=opts.LabelOpts(is_show=False, position="center")  )
                    .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"])
                    .set_global_opts(title_opts=opts.TitleOpts(title="Language", pos_left="28.7%", pos_top="30%"),
                                     legend_opts=opts.LegendOpts(orient="vertical", pos_left="20%", pos_top="10%")  )
                    .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)")  )
                   )

    Genre_pie = (
                 Pie()
                 .add("Genre",
                      df_genre.values.tolist(),
                      center=["52%", "35%"], 
                      radius=["40%", "55%"], 
                      label_opts=opts.LabelOpts(is_show=False, position="center")  )

                 .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"])
                 .set_global_opts(title_opts=opts.TitleOpts(title="Genre", pos_left="50%", pos_top="30%"),
                                  legend_opts=opts.LegendOpts(orient="vertical", pos_left="40%", pos_top="10%")  )
                 .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)")  )
                )

    Length_pie = (
                  Pie()
                  .add("Length",
                       df_length.values.tolist(),
                       center=["72%", "35%"], 
                       radius=["40%", "55%"], 
                       label_opts=opts.LabelOpts(is_show=False, position="center")  )

                  .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"])
                  .set_global_opts(title_opts=opts.TitleOpts(title="Length", pos_left="69.6%", pos_top="30%"),
                                   legend_opts=opts.LegendOpts(orient="vertical", pos_left="60%", pos_top="10%")  )
                  .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)")  )
                 )

    Star_Rating_pie=(
                     Pie()
                     .add("Star Rating",
                          df_star.values.tolist(),
                          center=["92%", "35%"], 
                          radius=["40%", "55%"], 
                          label_opts=opts.LabelOpts(is_show=False, position="center")  )

                     .set_colors(["#fc636b", "#ffb900", "#6a67ce", "#50667f", "#1aafd0", "#3be8b0"])
                     .set_global_opts(title_opts=opts.TitleOpts(title="Star Rating", pos_left="88.4%", pos_top="30%"),
                                      legend_opts=opts.LegendOpts(orient="vertical", pos_left="80%", pos_top="10%")  )
                     .set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)")  )
                    )

    return Grid(init_opts=opts.InitOpts(width="1500px", height="250px")).add(Mode_pie, grid_opts=opts.GridOpts()).add(Language_pie, grid_opts=opts.GridOpts()).add(Genre_pie, grid_opts=opts.GridOpts()).add(Length_pie, grid_opts=opts.GridOpts()).add(Star_Rating_pie, grid_opts=opts.GridOpts())
Esempio n. 4
0
 def analyse_worldhistory(self):
     world=pd.DataFrame(pd.read_excel(self.file+'\\data\\世界总体疫情信息\\世界总体疫情信息.xlsx'))
     confirmAdd=int(world['confirmAdd'].sum())
     confirm=int(world['confirm'].sum())
     confirmAddCut=int(world['confirmAddCut'].sum())
     suspect=int(world['suspect'].sum())
     dead=int(world['dead'].sum())
     heal=int(world['heal'].sum())
     nowConfirm=int(world['nowConfirm'].sum())
     confirmCompare=int(world['confirmCompare'].sum())
     nowConfirmCompare=int(world['nowConfirmCompare'].sum())
     healCompare=int(world['healCompare'].sum())
     deadCompare=int(world['deadCompare'].sum())
     healRate=round(heal/confirm*100,2)
     deadRate=round(dead/confirm*100,2)
     aliveRate=round(100-healRate-deadRate,2)
     ratedata=[deadRate,healRate,aliveRate]
     ratecolumns=['死亡率/% ','治愈率/% ','存活率/% ']
     
     bar_world=\
     (
         Bar()
         .add_xaxis(" ")
         .add_yaxis('新增确诊',[confirmAdd],color='pink',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('累计确诊',[confirm],color='green',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('疑似病例',[suspect],color='black',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('死亡病例',[dead],color='orange',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('治愈病例',[heal],color='red',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('现有确诊',[nowConfirm],color='grey',label_opts=opts.LabelOpts(is_show=True))
         .set_global_opts(title_opts=opts.TitleOpts(title='世界疫情信息'),
                          tooltip_opts=opts.TooltipOpts(is_show=False),
                          xaxis_opts=opts.AxisOpts(name='日期',axislabel_opts={"interval":"0"}),
                          yaxis_opts=opts.AxisOpts(name='人数',splitline_opts=opts.SplitLineOpts(is_show=True),)
                         )
     )#柱形图
     bar_worldother=\
     (
         Bar()
         .add_xaxis(" ")
         .add_yaxis('confirmAddCut',[confirmAddCut],color='pink',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('confirmCompare',[confirmCompare],color='green',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('nowConfirmCompare',[nowConfirmCompare],color='orange',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('healCompare',[healCompare],color='black',label_opts=opts.LabelOpts(is_show=True))
         .add_yaxis('deadCompare',[deadCompare],color='red',label_opts=opts.LabelOpts(is_show=True))
         .set_global_opts(title_opts=opts.TitleOpts(title='世界疫情其他信息',pos_left='37%',pos_top='5%'),
                          tooltip_opts=opts.TooltipOpts(is_show=False),
                          xaxis_opts=opts.AxisOpts(name='日期',axislabel_opts={"interval":"0"}),
                          yaxis_opts=opts.AxisOpts(name='人数',splitline_opts=opts.SplitLineOpts(is_show=True),)
                         )
     )  #柱形图
     pie_worldrate=\
     (
      Pie()
      .add("", [list(z) for z in zip(ratecolumns,ratedata)],
             radius=["20%", "60%"],
             center=["55%", "50%"],
             rosetype="area"
             )
     .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=12,formatter="{b}:{c}", font_style="italic",font_weight="bold", font_family="Microsoft YaHei"),)
     .set_global_opts(title_opts=opts.TitleOpts(title='世界总的死亡率、治疗率、存活率'),
                      tooltip_opts=opts.TooltipOpts(axis_pointer_type= 'cross'),
                      xaxis_opts=opts.AxisOpts(name='日期'),
                      yaxis_opts=opts.AxisOpts(name='百分比'))
     )#饼图
     self.page.add(bar_world)#添加到同一页面
     self.page.add(bar_worldother)#添加到同一页面
     self.page.add(pie_worldrate)#添加到同一页面
     bar_world.render(self.path+'\\world.html')#在analysis生成html文件
     bar_worldother.render(self.path+'\\worldother.html')#在analysis生成html文件
     pie_worldrate.render(self.path+'\\worldrate.html')#在analysis生成html文件
     """
Esempio n. 5
0
 Pie()
 .add(
     series_name="访问来源",
     data_pair=inner_data_pair,
     radius=[0, "30%"],
     label_opts=opts.LabelOpts(position="inner"),
 )
 .add(
     series_name="访问来源",
     radius=["40%", "55%"],
     data_pair=outer_data_pair,
     label_opts=opts.LabelOpts(
         position="outside",
         formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",
         background_color="#eee",
         border_color="#aaa",
         border_width=1,
         border_radius=4,
         rich={
             "a": {"color": "#999", "lineHeight": 22, "align": "center"},
             "abg": {
                 "backgroundColor": "#e3e3e3",
                 "width": "100%",
                 "align": "right",
                 "height": 22,
                 "borderRadius": [4, 4, 0, 0],
             },
             "hr": {
                 "borderColor": "#aaa",
                 "width": "100%",
                 "borderWidth": 0.5,
                 "height": 0,
             },
             "b": {"fontSize": 16, "lineHeight": 33},
             "per": {
                 "color": "#eee",
                 "backgroundColor": "#334455",
                 "padding": [2, 4],
                 "borderRadius": 2,
             },
         },
     ),
 )
 .set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"))
 .set_series_opts(
     tooltip_opts=opts.TooltipOpts(
         trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
     )
 )
 .render("nested_pies.html")
Esempio n. 6
0
        'max': 99,
        'min': 10,
        'color': '#f27777'
    },
    {
        'max': 9,
        'min': 1,
        'color': '#f7adad'
    },
    {
        'max': 0,
        'color': '#f7e4e4'
    },
]

m = Pie()
m.add("累计确诊", [list(z) for z in zip(labels, counts)],
      center=["50%", "70%"],
      radius='55%')
#m.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
m.set_global_opts(
    title_opts=opts.TitleOpts(title="中国疫情饼图(COVID-19 CHINA)" + today),
    legend_opts=opts.LegendOpts(orient="vertical",
                                pos_top="15%",
                                pos_left="85%"),
    visualmap_opts=opts.VisualMapOpts(
        pieces=pieces,
        is_piecewise=True,  #是否为分段型
        is_show=True))  #是否显示视觉映射配置)

m.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
Esempio n. 7
0
File: 2.py Progetto: MeowsQAQ/ncp
def get_year_chart(year: str):
    map_data = [
        [[x["name"], x["value"]] for x in d["data"]] for d in MapData if d["time"] == year
    ][0]
    min_data, max_data = (minNum, maxNum)
    data_mark: List = []
    i = 0
    for x in time_list:
        if x == year:
            data_mark.append(total_num[i])
        else:
            data_mark.append("")
        i = i + 1

    map_chart = (
        Map()
        .add(
            series_name="",
            data_pair=map_data,
            zoom=1,
            center=[119.5, 34.5],
            is_map_symbol_show=False,
            itemstyle_opts={
                "normal": {"areaColor": "#323c48", "borderColor": "#404a59"},
                "emphasis": {
                    "label": {"show": Timeline},
                    "areaColor": "rgba(255,255,255, 0.5)",
                },
            },
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="" +
                      str(year) + "全国各省份NCP实时动态(数据来源:丁香园; 数据仓库:BlankerL/DXY-2019-nCoV-Data)",
                subtitle="",
                pos_left="center",
                pos_top="top",
                title_textstyle_opts=opts.TextStyleOpts(
                    font_size=25, color="rgba(255,255,255, 0.9)"
                      ),
            ),
            tooltip_opts=opts.TooltipOpts(
                is_show=True,
                formatter=JsCode(
                    """function(params) {
                    if ('value' in params.data) {
                        return params.data.value[2] + ': ' + params.data.value[0];
                    }
                }"""
                ),
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_calculable=True,
                dimension=0,
                pos_left="30",
                pos_top="center",
                range_text=["High", "Low"],
                range_color=["lightskyblue", "yellow", "orangered"],
                textstyle_opts=opts.TextStyleOpts(color="#ddd"),
                min_=min_data,
                max_=max_data,
            ),
        )
    )

    line_chart = (
        Line()
        .add_xaxis(time_list)
        .add_yaxis("", total_num)
        .add_yaxis(
            "",
            data_mark,
            markpoint_opts=opts.MarkPointOpts(
                data=[opts.MarkPointItem(type_="max")]),
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="全国各省份NCP实时动态(单位: 百人)", pos_left="72%", pos_top="5%"
            )
        )
    )
    bar_x_data = [x[0] for x in map_data]
    bar_y_data = [{"name": x[0], "value": x[1][0]} for x in map_data]
    bar = (
        Bar()
        .add_xaxis(xaxis_data=bar_x_data)
        .add_yaxis(
            series_name="",
            yaxis_data=bar_y_data,
            label_opts=opts.LabelOpts(
                is_show=True, position="right", formatter="{b} : {c}"
            ),
        )
        .reversal_axis()
        .set_global_opts(
            xaxis_opts=opts.AxisOpts(
                max_=maxCount, axislabel_opts=opts.LabelOpts(is_show=False)
            ),
            yaxis_opts=opts.AxisOpts(
                axislabel_opts=opts.LabelOpts(is_show=False)),
            tooltip_opts=opts.TooltipOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(
                is_calculable=True,
                dimension=0,
                pos_left="10",
                pos_top="top",
                range_text=["High", "Low"],
                range_color=["lightskyblue", "yellow", "orangered"],
                textstyle_opts=opts.TextStyleOpts(color="#ddd"),
                min_=min_data,
                max_=max_data,
            ),
        )
    )

    pie_data = [[x[0], x[1][0]] for x in map_data]
    pie = (
        Pie()
        .add(
            series_name="",
            data_pair=pie_data,
            radius=["15%", "35%"],
            center=["80%", "82%"],
            itemstyle_opts=opts.ItemStyleOpts(
                border_width=1, border_color="rgba(0,0,0,0.5)"
            ),
        )
        .set_global_opts(
            tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{b} {d}%"),
            legend_opts=opts.LegendOpts(is_show=False),
        )
    )

    grid_chart = (
        Grid()
        .add(
            bar,
            grid_opts=opts.GridOpts(
                pos_left="10", pos_right="45%", pos_top="50%", pos_bottom="5"
            ),
        )
        .add(
            line_chart,
            grid_opts=opts.GridOpts(
                pos_left="65%", pos_right="80", pos_top="10%", pos_bottom="50%"
            ),
        )
        .add(pie, grid_opts=opts.GridOpts(pos_left="45%", pos_top="60%"))
        .add(map_chart, grid_opts=opts.GridOpts())
    )

    return grid_chart
Esempio n. 8
0
        sum_price = 0
        number = len(price_list)
        for price in price_list:
            sum_price += int(price[0].replace('元/㎡', ''))
        average = sum_price / number
        average_list.append(format(average, '.2f'))
    return average_list


price_list = select_average_price()
print(price_list)
# 柱状图
bar_obj = (
    Bar(init_opts=options.InitOpts(theme=ThemeType.MACARONS)) \
        .add_xaxis((city_list)) \
        .add_yaxis("", price_list) \
        .set_global_opts(title_opts=options.TitleOpts("买房平均价格元/㎡", subtitle='仅供参考'),
                         toolbox_opts=options.ToolboxOpts(),  # 工具栏选项
                         brush_opts=options.BrushOpts()  # 工具刷对象
                         )
)

# 饼状图
b_list = [list(i) for i in zip(city_list, price_list)]
pie_ogj = (Pie().add("", b_list).set_series_opts(label_opts=options.LabelOpts(
    formatter="{b}: {c}")))
# page对象用于整合地图
p = Page(layout=Page.SimplePageLayout)
p.add(pie_ogj, bar_obj)
p.render("一线城市买房信息整合.html")
Esempio n. 9
0
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd

vote_result = pd.read_csv('vote_result.csv')
'''
Pie要求输入的数据格式为
[
[name1, value1],
[name2, value2],
[name3, value3],
...
]
故需要转换格式
'''
data = [list(z) for z in zip(vote_result['感兴趣的领域'], vote_result['票数'])]

pie = Pie()
pie.add('', data)

pie.set_global_opts(title_opts=opts.TitleOpts(title='饼图示例'),
                    legend_opts=opts.LegendOpts(is_show=False))
pie.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{d}%'))
pie.render('pie(1).html')
Esempio n. 10
0
# 5.绘图

(
    Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK))
  .add(
        "",
       result,
        radius=["30%","75%"],
       center=["50%", "50%"],
       rosetype="area"
    )
    # 全局配置项
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="户型分布",
            pos_left="center",
            pos_top="20v",
            title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
        ),
        legend_opts=opts.LegendOpts(is_show=False),
    )
    # 系列配置项
    .set_series_opts(
        label_opts=opts.LabelOpts(
            formatter="{b}:{d}%"
        ),
    )
    .render("户型分布.html")

)
Esempio n. 11
0
labels1 = [
    '0-100', '100-1000', '1000-5000', '5000-10000', '10000-100000', '100000以上'
]
sizes1 = [
    len(df[(df['粉丝'] <= 100)]),
    len(df[(df['粉丝'] >= 100) & (df['粉丝'] < 1000)]),
    len(df[(df['粉丝'] >= 1000) & (df['粉丝'] < 5000)]),
    len(df[(df['粉丝'] >= 5000) & (df['粉丝'] < 10000)]),
    len(df[(df['粉丝'] >= 10000) & (df['粉丝'] < 100000)]),
    len(df[(df['粉丝'] >= 100000)])
]
print(sizes1)

c = (Pie(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE)).add(
    "", [list(z) for z in zip(labels1, sizes1)]).set_global_opts(
        title_opts=opts.TitleOpts(title="知乎用户粉丝数量分布图", pos_bottom='center'),
        legend_opts=opts.LegendOpts(pos_left="15%"),
    ).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")))
c.render("知乎用户粉丝数量分布图.html")

#知乎用户获赞数分布图
labels2 = [
    '0-100', '100-1000', '1000-5000', '5000-10000', '10000-100000', '100000以上'
]
sizes2 = [
    len(df[(df['获赞'] <= 100)]),
    len(df[(df['获赞'] >= 100) & (df['获赞'] < 1000)]),
    len(df[(df['获赞'] >= 1000) & (df['获赞'] < 5000)]),
    len(df[(df['获赞'] >= 5000) & (df['获赞'] < 10000)]),
    len(df[(df['获赞'] >= 10000) & (df['获赞'] < 100000)]),
    len(df[(df['获赞'] >= 100000)])
Esempio n. 12
0
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker

c = (
    Pie()
    .add(
        "",
        [
            list(z)
            for z in zip(
                Faker.choose() + Faker.choose() + Faker.choose(),
                Faker.values() + Faker.values() + Faker.values(),
            )
        ],
        center=["40%", "50%"],
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Pie-Legend 滚动"),
        legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    .render("pie_scroll_legend.html")
)
Esempio n. 13
0
 Pie(init_opts=opts.InitOpts(
     bg_color='#031f2d',
 ))
     .set_global_opts(
     title_opts=opts.TitleOpts(
         title="%d年\n\n不同空军机型统计" % (years[i],),
         pos_left='center',
         pos_top='40%',
         padding=[24, 0],
         title_textstyle_opts=opts.TextStyleOpts(
             color='#fff',
             font_size=18,
             align='center'
         )
     ),
     legend_opts=opts.LegendOpts(
         type_="scroll",
         pos_left="80%",
         orient="vertical",
         textstyle_opts=opts.TextStyleOpts(
             color='#fff',
             font_size=16,
             rich=rich
         ),
     )
 )
     .add(
     "xilie1",
     datalist[i],
     radius=['42%', '50%'],
     label_opts=opts.LabelOpts(
         position="outside",
         rich=rich,
         formatter="{white|{b}} \n{hr|}\n{yellow|{c}}\n{blue|{d}%}"
         # 参数说明:{a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
     )
 )
Esempio n. 14
0
def WriteImgTxt(IPdata,filename):
    alivehosts = len(IPdata)
    openports = 0
    weburls = 0
    portdict = {}
    servicedict = {}
    for i in IPdata:
        weburls += (len(i.get('urls')))
        openports += (len(i.get('ports')))
        service = (i.get('services'))
        for k, v in service.items():
            portdict[k] = 0
            servicedict[v.upper()] = 0
    for i in IPdata:
        service = (i.get('services'))
        for k, v in service.items():
            portdict[k] = portdict[k] + 1
            servicedict[v.upper()] = servicedict[v.upper()] + 1
    inner_x_data = ["存活主机", "开放端口", "部署网站"]
    inner_y_data = [alivehosts, openports, weburls]
    inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)]
    mid_data_pair = list(portdict.items())

    outer_data_pair = list(servicedict.items())
    c=(
        Pie(init_opts=opts.InitOpts(width="2200px", height="900px"))
        .add(
            series_name="总体资产",
            data_pair=inner_data_pair,
            radius=[0, "20%"],
            label_opts=opts.LabelOpts(position="inner",formatter="{b}:{c}个"),
        )

            .add(
            series_name="开放端口",
            data_pair=mid_data_pair,
            radius=["25%", "50%"],
            label_opts=opts.LabelOpts(position="inner",formatter="端口:{b}|总数:{c}"),
        )

        .add(
            series_name="部署服务",
            radius=["55%", "80%"],
            data_pair=outer_data_pair,
            label_opts=opts.LabelOpts(formatter="{a}:{b}|占比:{d}%"),
        )
        .set_global_opts(legend_opts=opts.LegendOpts(pos_left="mid", orient="vertical"))
        .set_series_opts(
            tooltip_opts=opts.TooltipOpts(
                trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
            )
        )
        .render(filename)
    )
    # words = mid_data_pair + outer_data_pair
    # c = (
    #     WordCloud(init_opts=opts.InitOpts(width="1200px", height="800px"))
    #     .add("", words, word_size_range=[30, 80])
    #     # .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例"))
    # ).render('test.txt')


    if os.path.exists(filename):
        with open(filename, 'r', encoding='utf-8')as a:
            res1 = re.search('(<body>.*?</body>)', a.read(), re.S | re.I).group(1)
        os.remove(filename)
        return res1
        # with open('test.txt', 'r', encoding='utf-8')as a:
        #     res2 = re.search('(<body>.*?</body>)', a.read(), re.S | re.I).group(1)
        # os.remove('test.txt')
        # res3 = '<div class="col-sm-6">{}</div><div class="col-sm-6">{}</div>'.format(res1,res2)
        # return res3
    else:
        Log('生成效果图失败')
Esempio n. 15
0
File: Draw.py Progetto: lofxve/youtu
    def drawpie(attr,value,name):
        list1 = [list(z) for z in zip(attr,value)]
        # 图表初始化配置
        init_opts = opts.InitOpts(page_title=name)

        pie = Pie(init_opts=init_opts)
        # 标题配置
        title = opts.TitleOpts(title=name,
                               pos_left='center')
        # 图例配置
        legend_opts = opts.LegendOpts(orient="vertical",
                                      pos_top="20%",
                                      pos_left="15%")

        # 工具箱配置
        # feature = opts.ToolBoxFeatureOpts(save_as_image=True, restore=True, data_view=True, data_zoom=True)
        # 工具箱配置
        toolbox_opts = opts.ToolboxOpts(orient="vertical",
                                        pos_top="25%",
                                        pos_right="15%"
                                        )

        pie.set_global_opts(title_opts=title,
                            legend_opts=legend_opts,
                            toolbox_opts=toolbox_opts
                            )
        # 标签配置项
        pie.add("",
                list1,
                radius=[30, 75],
                center=['50%', '70%'],
                rosetype="area",
                label_opts=opts.LabelOpts(
                    position="outside",
                    formatter="{b|{b}: }{c}  {per|{d}%}  ",
                    background_color="#eee",
                    border_color="#aaa",
                    border_width=1,
                    border_radius=4,
                    rich={
                        "a": {"color": "#999", "lineHeight": 22, "align": "center"},
                        "abg": {
                            "backgroundColor": "#e3e3e3",
                            "width": "100%",
                            "align": "right",
                            "height": 22,
                            "borderRadius": [4, 4, 0, 0],
                        },
                        "hr": {
                            "borderColor": "#aaa",
                            "width": "100%",
                            "borderWidth": 0.5,
                            "height": 0,
                        },
                        "b": {"fontSize": 16, "lineHeight": 33},
                        "per": {
                            "color": "#eee",
                            "backgroundColor": "#334455",
                            "padding": [2, 4],
                            "borderRadius": 2,
                        },
                    },
                ),

         )

        pie.render('{0}.html'.format(name))
Esempio n. 16
0
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: yanghuizhi
# Time: 2020/3/15 6:59 下午

# // 导入饼图Pie

# // 设置主标题与副标题,标题设置居中,设置宽度为900
from pyecharts.charts import Pie

pie = Pie()

# // 加入数据,设置坐标位置为【25,50】,上方的colums选项取消显示

# pie.add("降水量", data_pair= /center=[25, 50] )

# // 加入数据,设置坐标位置为【75,50】,上方的colums选项取消显示,显示label标签

# pie.add("蒸发量", columns, data2, center=[75, 50], is_legend_show=False, is_label_show=True)
#
# // 保存图表

pie.render()
Esempio n. 17
0
df = pd.DataFrame(color, columns=['color'])
analyse_color = df['color'].value_counts()

# 颜色可视化
bar = Bar()
bar.add_xaxis(analyse_color.index.values.tolist())
bar.add_yaxis("", analyse_color.values.tolist())
bar.set_global_opts(
    xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)),
    title_opts=opts.TitleOpts(title="颜色分布"),
    # datazoom_opts=opts.DataZoomOpts(),
)
bar.render_notebook()

pie = Pie()
pie.add("", [
    list(z) for z in zip(analyse_color.index.values.tolist(),
                         analyse_color.values.tolist())
],
        radius=["30%", "75%"],
        center=["50%", "50%"],
        rosetype="area")
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
pie.set_global_opts(title_opts=opts.TitleOpts(title="各颜色占比"),
                    legend_opts=opts.LegendOpts(type_="scroll",
                                                pos_left="80%",
                                                orient="vertical"))
pie.render_notebook()

# 尺寸可视化
Esempio n. 18
0
def Pie1():
    pie = (Pie().add("", newdata).set_global_opts(
        title_opts=opts.TitleOpts(title="Pie-演员"),
        legend_opts=opts.LegendOpts(pos_left=160)).set_series_opts(
            label_opts=opts.LabelOpts(formatter="{b}: {c}")))
    return pie
Esempio n. 19
0
                    # 此处不可以用索引访问:row[0]
                    dataX.append(row["category_name"])
                    dataY.append(row["电影类型"])
                return dataX, dataY
            except:
                print("错误:数据查询操作失败")
    finally:
        connection.close()


# 执行主函数
if __name__ == '__main__':
    print(order_category_sum_query())
    dataX, dataY = order_category_sum_query()
    data_pair = [list(z) for z in zip(dataX, dataY)]
    pie = Pie()
    pie.add("", data_pair)
    pie.set_global_opts(
        title_opts=opts.TitleOpts(title="商品类型构成图"),
        legend_opts=opts.LegendOpts(orient="vertical",
                                    pos_top="15%",
                                    pos_right="-4.5%"),
    )
    pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"),
                        position="outside",
                        background_color="#eee",
                        border_color="#aaa",
                        border_width=1,
                        border_radius=4)
    pie.render('pie.html')
Esempio n. 20
0
1、迷之颜色映射的问题
"""

x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"]
y_data = [335, 310, 274, 235, 400]
data_pair = [list(z) for z in zip(x_data, y_data)]
data_pair.sort(key=lambda x: x[1])

(Pie(init_opts=opts.InitOpts(
    width="1600px", height="800px", bg_color="#2c343c")).add(
        series_name="访问来源",
        data_pair=data_pair,
        rosetype="radius",
        radius="55%",
        center=["50%", "50%"],
        label_opts=opts.LabelOpts(is_show=False, position="center"),
    ).set_global_opts(
        title_opts=opts.TitleOpts(
            title="Customized Pie",
            pos_left="center",
            pos_top="20",
            title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
        ),
        legend_opts=opts.LegendOpts(is_show=False),
    ).set_series_opts(
        tooltip_opts=opts.TooltipOpts(trigger="item",
                                      formatter="{a} <br/>{b}: {c} ({d}%)"),
        label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"),
    ).render("customized_pie.html"))
# In[11]:


risk = ['01 위험회피형','02 위험중립형','03 위험감수형']
color = ['#fc6472', '#f4b2a6', '#eccdb3', '#bcefd0', '#a1e8e4', '#23c8b2', '#7f5a7c']
label = label_opts=opts.LabelOpts(color=["black"], formatter="{b}:\n{d}% \n ", font_size = 11)
h_20 = list(high_20.risk.value_counts().sort_index())
m_20 = list(middle_20.risk.value_counts().sort_index())
l_20 = list(low_20.risk.value_counts().sort_index())
h_30 = list(high_30.risk.value_counts().sort_index())
m_30 = list(middle_30.risk.value_counts().sort_index())
l_30 = list(low_30.risk.value_counts().sort_index())

tl = Timeline()
pie_0 = (Pie().add("", [list(z) for z in zip(risk, l_20)], rosetype="radius",radius=["30%", "55%"])
        .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 20대")).set_series_opts(label))
tl.add(pie_0, "20대 자산 하위그룹")
pie_1 = (Pie().add("", [list(z) for z in zip(risk, m_20)], rosetype="radius",radius=["30%", "55%"])
        .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 20대")).set_series_opts(label))
tl.add(pie_1, "20대 자산 중위그룹")
pie_2 = (Pie().add("", [list(z) for z in zip(risk, h_20)], rosetype="radius",radius=["30%", "55%"])
        .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 20대")).set_series_opts(label))
tl.add(pie_2, "20대 자산 상위그룹")

tl2 = Timeline()
pie_0 = (Pie().add("", [list(z) for z in zip(risk, l_30)], rosetype="radius",radius=["30%", "55%"])
        .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 30대")).set_series_opts(label))
tl2.add(pie_0, "30대 자산 하위그룹")
pie_1 = (Pie().add("", [list(z) for z in zip(risk, m_30)], rosetype="radius",radius=["30%", "55%"])
        .set_colors(color).set_global_opts(title_opts=opts.TitleOpts("고객 투자성향 분포: 30대")).set_series_opts(label))
tl2.add(pie_1, "30대 자산 중위그룹")
Esempio n. 22
0
def paint_confirmed_distributed_chart(country):
    date = get.get_today()
    result = get.get_confirmed_distribution(country, date)

    if result:
        charts = (Pie().add("", result, radius=[60, 160]).set_global_opts(
            title_opts=opts.TitleOpts(title="累计确诊分布",
                                      pos_left="3%",
                                      pos_top="10",
                                      title_textstyle_opts=opts.TextStyleOpts(
                                          font_size=22, )),
            legend_opts=opts.LegendOpts(type_="scroll",
                                        pos_left='80%',
                                        pos_top='20%',
                                        orient="vertical"),
        ).set_series_opts(label_opts=opts.LabelOpts(
            formatter="{b}: {c} ({d}%)",
            font_size=15,
        )))

        return charts

    else:
        data = get.get_word_epidemic(date)[2]
        flag = False
        for index in range(0, len(data)):
            if data[index][0] == country:
                data = data[index][1][0]
                flag = True
                break

        if not flag:
            title_charts = (Pie().add(
                "", [[country, -1]], radius=[0, 0],
                center=['100%', '100%']).set_global_opts(
                    title_opts=opts.TitleOpts(
                        title="暂无数据",
                        pos_left="40%%",
                        pos_top="44%",
                        title_textstyle_opts=opts.TextStyleOpts(
                            font_size=30, )),
                    legend_opts=opts.LegendOpts(is_show=False),
                ).set_series_opts(label_opts=opts.LabelOpts(is_show=False)))
            return title_charts

        draw_data = [[country, data]]

        empty_charts = (
            Pie().add(
                "",
                draw_data,
                radius=[60, 160],
                # center=['50%', '65%']
            ).set_global_opts(
                title_opts=opts.TitleOpts(
                    title="确诊人数",
                    pos_left="3%",
                    pos_top="10",
                    title_textstyle_opts=opts.TextStyleOpts(font_size=22, )),
                legend_opts=opts.LegendOpts(type_="scroll",
                                            pos_left='80%',
                                            pos_top='20%',
                                            orient="vertical"),
            ).set_series_opts(label_opts=opts.LabelOpts(
                formatter="{b}: {c} ({d}%)",
                font_size=15,
            )))

    return empty_charts
    .add_xaxis(Faker.choose())
    .add_yaxis("商家C", Faker.values(), stack="stack2")
    .add_yaxis("商家D", Faker.values(), stack="stack2")
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
        legend_opts=opts.LegendOpts(pos_top="48%"),
    )
)

c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(Faker.choose(), Faker.values())],
        radius=["40%", "75%"],
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Pie-Radius"),
        legend_opts=opts.LegendOpts(
            orient="vertical", pos_top="15%", pos_left="2%"
        ),
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )

grid = (
    Grid()
    .add(bar1, grid_opts=opts.GridOpts(pos_bottom="60%"))
    .add(c, grid_opts=opts.GridOpts(pos_top="60%"))
)
grid.render('grid.html')
Esempio n. 24
0
    #     # json_personnal_information = personnal_information1(uid)
    #     text = personnal_information2(uid)
    #     birthday = re.findall('<p id="J_birthday" style="display:none;">(.*?)</p></div>', text)
    #     location = re.findall('<p id="J_location" class="J_label"[^>]*>([^<]*)</p>', text)
    #     name = re.findall('<p id="J_name" class="J_label" isCompany="">(.*?)</p></div>', text)
    #     agender = re.findall('<span class="L-selected-select">(.*?)</span></div>', text)
    # else:
    #     print('登陆失败')
    """"""

    # if os.path.exists('weibo.csv'):
    #     os.remove('weibo.csv')
    # for i in range(1000):
    #     time.sleep(random.random() * 3)
    #     print('第%d页' % (i + 1))
    #     spider_weibo()

    """"""
    dic = read_csv_to_dict(2)
    # 生成二维数组
    gender_count_list = [list(z) for z in zip(dic.keys(), dic.values())]
    print(gender_count_list)
    pie = (
        Pie()
        .add('', gender_count_list)
        .set_colors(['red', 'blue'])
        .set_global_opts(title_opts=options.TitleOpts(title='性别分析'))
        .set_series_opts(label_opts=options.LabelOpts(formatter='{b}: {c}'))
    )
    pie.render('gender.html')
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker

c = (Pie().add(
    "",
    [list(z) for z in zip(Faker.choose(), Faker.values())],
    center=["35%", "50%"],
).set_global_opts(
    title_opts=opts.TitleOpts(title="Pie-调整位置"),
    legend_opts=opts.LegendOpts(pos_left="15%"),
).set_series_opts(label_opts=opts.LabelOpts(
    formatter="{b}: {c}")).render("Pie_position.html"))
c = (Pie().add(
    "",
    [list(z) for z in zip(["剧情", "其他"], [25, 75])],
    center=["20%", "30%"],
    radius=[60, 80],
    label_opts=new_label_opts(),
).add(
    "",
    [list(z) for z in zip(["奇幻", "其他"], [24, 76])],
    center=["55%", "30%"],
    radius=[60, 80],
    label_opts=new_label_opts(),
).add(
    "",
    [list(z) for z in zip(["爱情", "其他"], [14, 86])],
    center=["20%", "70%"],
    radius=[60, 80],
    label_opts=new_label_opts(),
).add(
    "",
    [list(z) for z in zip(["惊悚", "其他"], [11, 89])],
    center=["55%", "70%"],
    radius=[60, 80],
    label_opts=new_label_opts(),
).set_global_opts(
    title_opts=opts.TitleOpts(title="Pie-多饼图基本示例"),
    legend_opts=opts.LegendOpts(type_="scroll",
                                pos_top="20%",
                                pos_left="80%",
                                orient="vertical"),
).render("Mutiple_pie.html"))
Esempio n. 27
0
c = (Pie().add(
    "",
    [list(z) for z in zip(Faker.choose(), Faker.values())],
    radius=["40%", "55%"],
    label_opts=opts.LabelOpts(
        position="outside",
        formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",
        background_color="#eee",
        border_color="#aaa",
        border_width=1,
        border_radius=4,
        rich={
            "a": {
                "color": "#999",
                "lineHeight": 22,
                "align": "center"
            },
            "abg": {
                "backgroundColor": "#e3e3e3",
                "width": "100%",
                "align": "right",
                "height": 22,
                "borderRadius": [4, 4, 0, 0],
            },
            "hr": {
                "borderColor": "#aaa",
                "width": "100%",
                "borderWidth": 0.5,
                "height": 0,
            },
            "b": {
                "fontSize": 16,
                "lineHeight": 33
            },
            "per": {
                "color": "#eee",
                "backgroundColor": "#334455",
                "padding": [2, 4],
                "borderRadius": 2,
            },
        },
    ),
).set_global_opts(title_opts=opts.TitleOpts(
    title="Pie-富文本示例")).render("pie_rich_label.html"))
Esempio n. 28
0
from pyecharts import options as opts
from pyecharts.charts import Pie, Line, Bar, Liquid

engine = create_engine(
    'mysql://*****:*****@172.16.122.25:3306/test?charset=utf8')

# PU 占比
sql = """
select sum(case when pay_price > 0 then 1 else 0 end) as `付费用户`,
       sum(case when pay_price > 0 then 0 else 1 end) as `非付费用户`
from age_of_barbarians
"""
data = pd.read_sql(con=engine, sql=sql)
c1 = (Pie().add(
    "",
    [list(z) for z in zip(data.columns, data.values[0])],
).set_series_opts(label_opts=opts.LabelOpts(
    formatter="{b}: {c} 占比: {d}%")).render("pie_pu.html"))
os.system("pie_pu.html")

# DNU 柱形图
sql = """
select cast(register_time as date) as day,
       count(1) as dnu
from age_of_barbarians
group by cast(register_time as date)
order by day;
"""
data = pd.read_sql(con=engine, sql=sql)

c2 = (Bar().add_xaxis(list(data['day'])).add_yaxis("新增用户数", list(
Esempio n. 29
0
from pyecharts.charts import Pie
from pyecharts import options as ops

f = open('PF.txt', 'r', encoding='utf8')
l = []
for i in f.readlines():
    l.append(i.strip('\n'))
print(l)

data = []
for s in l:
    data.append(s.replace("%", '').split('\t'))

data = [[d[0], float(d[1])] for d in data]
print(data)
c = (Pie().add("", [z for z in data], radius=[
    '30', '200'
]).set_global_opts(title_opts=ops.TitleOpts(title='评分')).set_series_opts(
    label_opts=ops.LabelOpts(formatter='{b}:{c}')).render('./pf.html'))
# 3、生成饼状图
cut_words = jieba.cut(' '.join(short_comments.Comment))
keywords_count_list = []
for i in reversed(keywords_count_list_TR[:20]):
    keywords_count_list.append(i[0])
print(keywords_count_list)
keywords_count_result = [0 for x in range(20)]
for word in cut_words:
    for j in range(20):
        if word == keywords_count_list[j]:
            keywords_count_result[j] = keywords_count_result[j] + 1
print(keywords_count_result)
keywords_count_pie = (Pie().add(
    "", [list(z) for z in zip(keywords_count_list, keywords_count_result)
         ]).set_global_opts(title_opts=opts.TitleOpts(
             title="上海堡垒短评热词TOP20")).set_series_opts(label_opts=opts.LabelOpts(
                 formatter="{b}: {c}")))
keywords_count_pie.render('comment-word-count-pie.html')

# 4、评星统计
rating = [0 for x in range(5)]
for result in short_comments.Rating:
    if result == '很差':
        rating[0] += 1
    elif result == '较差':
        rating[1] += 1
    elif result == '还行':
        rating[2] += 1
    elif result == '推荐':
        rating[3] += 1