コード例 #1
0
ファイル: test_map.py プロジェクト: zuislau/pyecharts
def test_map_base():
    c = Map().add("商家A",
                  [list(z) for z in zip(Faker.provinces, Faker.values())],
                  "china")
    assert c.theme == "white"
    assert c.renderer == "canvas"
    c.render("render.html")
コード例 #2
0
def create_province_map(df):
    # 筛选数据
    df = df[df["country"] == "中国"]
    df1 = df.copy()
    # 数据替换
    df1["province"] = df1["province"].str.replace("省", "").str.replace(
        "壮族自治区", "").str.replace("维吾尔自治区", "").str.replace("自治区", "")
    # 分组计数
    df_num = df1.groupby("province")["province"].agg(count="count")
    df_province = df_num.index.values.tolist()
    df_count = df_num["count"].values.tolist()

    # 初始化配置
    map = Map(init_opts=opts.InitOpts(width="800px", height="400px"))
    # 中国地图
    map.add("", [list(z) for z in zip(df_province, df_count)], "china")
    # 设置全局配置项,标题、工具箱(下载图片)、颜色图例
    map.set_global_opts(
        title_opts=opts.TitleOpts(title="抖音大V省份分布情况",
                                  pos_left="center",
                                  pos_top="0"),
        toolbox_opts=opts.ToolboxOpts(is_show=True,
                                      feature={"saveAsImage": {}}),
        # 设置数值范围0-600,is_piecewise标签值连续
        visualmap_opts=opts.VisualMapOpts(max_=600, is_piecewise=False))
    map.render("抖音大V省份分布情况.html")
コード例 #3
0
def test_map_base():
    c = Map().add("商家A",
                  [list(z) for z in zip(Faker.provinces, Faker.values())],
                  "china")
    eq_(c.theme, "white")
    eq_(c.renderer, "canvas")
    c.render()
コード例 #4
0
def sxcsfb():
    friends = bot.friends(update=True)
    dd1 = defaultdict(int)  # 如果调用字典的key不存在的时候,默认value为0
    for hy in friends:
        # print(hy.city)
        if '\u9fa5' >= hy.city >= '\u4e00':  # 如果省份是汉字就保留,否则就舍弃,因为在中国地图上也不会显示
            city = hy.city + "市"  # 必须要加,不加会名字识别不到
            dd1[city] += 1  # 每次进来如果key相同则进行累加
    sj = [list(a) for a in zip(dd1.keys(), dd1.values())]

    print(sj)

    # 地图部分
    m2 = Map()
    m2.add(series_name="微信好友",
           data_pair=sj,
           maptype="陕西",
           is_map_symbol_show=True)
    m2.set_global_opts(title_opts=opts.TitleOpts(
        title="陕西好友分布",
        subtitle=time.strftime("%Y-%m-%d %H:%M:%S",
                               time.localtime(time.time()))),
                       visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
                                                         is_calculable=True,
                                                         max_=180))
    m2.render("./kshwy/map_sxcsfb.html")
    webbrowser.open("E:\study\kshwy\map_sxcsfb.html")
コード例 #5
0
def sffb():
    friends = bot.friends(update=True)
    dy = defaultdict(
        lambda: 0)  # defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值
    for f in friends:
        if '\u9fa5' >= f.province >= '\u4e00':  # 如果省份是汉字就保留,否则就舍弃,因为在中国地图上也不会显示
            dy[f.province] += 1
    attr = dy.keys()
    value = dy.values()
    dx = [list(dx1) for dx1 in zip(attr, value)
          ]  # zip将可迭代的对象打包成一个一个的元组 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
    print(dx)

    # 地图部分
    m1 = Map()
    m1.add(series_name="微信好友",
           data_pair=dx,
           maptype="china",
           name_map={"key": "value"},
           is_map_symbol_show=True)
    m1.set_global_opts(
        title_opts=opts.TitleOpts(title="小李的微信好友",
                                  subtitle="2020-04-10"),  # 设置标题和副标题在左侧
        visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
                                          max_=250)  # 是否分段,以及分段的最大值
    )
    m1.render('province.html')
    webbrowser.open('province.html')
コード例 #6
0
def dili(df):
    df_sales = df
    df_sales['订单创建时间'] = pd.to_datetime(df_sales['订单创建时间'])
    df_sales = df_sales.set_index('订单创建时间')
    df_sales_map = df_sales.groupby('收货地址')['收货地址'].count().sort_values(ascending=False)

    plt.figure(figsize=(10, 5))
    df_sales_map.plot(kind='bar', color='#87CEFA')

    result = []
    for i in df_sales_map.index:
        if i.endswith('自治区'):
            if i == '内蒙古自治区':
                i = i[:3]
                result.append(i)
            else:
                i = i[:2]
                result.append(i)
        else:
            result.append(i)

    df_sales_map.index = result
    df_sales_map.index = df_sales_map.index.str.strip('省')
    print(df_sales_map.index)
    from pyecharts.charts import Map

    sales_map = Map().add('订单数', [list(i) for i in df_sales_map.items()]).set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=max(df_sales_map) * 0.6))  # 设置最大数据范围

    sales_map.render()
コード例 #7
0
    def visulize(
        self,
        city_name,
        school_counts,
    ):
        if (self.FlagOfProcess):
            realcity = []
            # 处理城市名,只保留两字或三字名称
            for citys in city_name:
                if "黑龙江" in citys:
                    a = "黑龙江"
                elif "内蒙古" in citys:
                    a = "内蒙古"
                else:
                    a = citys[4:6]
                realcity.append(a)
            # print(realcity)
            # 将数据处理成列表
            list1 = [[realcity[i], school_counts[i]]
                     for i in range(len(realcity))]
            # print(list1)

            map_1 = Map()
            map_1.set_global_opts(
                title_opts=opts.TitleOpts(title="2020高校分布"),
                visualmap_opts=opts.VisualMapOpts(max_=40)  # 最大数据范围
            )
            map_1.add("2020高校分布", list1, maptype="china")
            # map_1.add_js_funcs("window.confirm()")
            map_1.render('SchoolMap.html')
            print("绘制成功,请在同级目录下查看 SchoolMap.html 文件!")
        else:
            print("出现错误,停止绘制图表!")
コード例 #8
0
def confirmed_maps():
    map_chart = Map()
    map_chart.add(
        '疫情地圖',
        [list(i) for i in zip(city_confirmed.keys(), city_confirmed.values())],
        maptype='台湾',
        is_map_symbol_show=True,
        label_opts=opts.LabelOpts(is_show=False))

    map_chart.set_global_opts(title_opts=opts.TitleOpts(title='台灣'),
                              visualmap_opts=opts.VisualMapOpts(
                                  is_piecewise=True,
                                  pieces=[{
                                      "min": 1,
                                      "max": 50,
                                      "label": "1-50人",
                                      "color": "#FFE6BE"
                                  }, {
                                      "min": 51,
                                      "max": 100,
                                      "label": "51-100人",
                                      "color": "#FFB769"
                                  }, {
                                      "min": 101,
                                      "max": 300,
                                      "label": "101-300人",
                                      "color": "#FF8F66"
                                  }, {
                                      "min": 301,
                                      "max": 1000,
                                      "label": "301-1000人",
                                      "color": "#ED514E"
                                  }]))
    map_chart.render('confirmed_map.html')
コード例 #9
0
ファイル: test_map.py プロジェクト: zjuitc/pyecharts
def test_map_base(fake_writer):
    c = Map().add("商家A",
                  [list(z) for z in zip(Faker.provinces, Faker.values())],
                  "china")
    c.render()
    _, content = fake_writer.call_args[0]
    eq_(c.theme, "white")
    eq_(c.renderer, "canvas")
コード例 #10
0
 def chart(self, f):  # unsupported city map for now
     city, frequency = self.clean(f)[1], self.clean(f)[2]
     data = [[city[i], frequency[i]] for i in range(len(city))]
     map_1 = Map()
     map_1.set_global_opts(
         title_opts=opts.TitleOpts(title="2020年b站会员购商品线下分布"),
         visualmap_opts=opts.VisualMapOpts(max_=100)  # 最大数据范围
     )
     map_1.add("2020年b站会员购商品线下分布", data, maptype="china")
     map_1.render('vip.html')
コード例 #11
0
def render():
    world_map = getData()
    china_map = getChinaData()
    map = Map(
        options.InitOpts(bg_color="#87CEFA",
                         width="100%",
                         height="900px",
                         page_title='世界疫情分布'))
    for item in maps:
        map_data = {}
        for item_map in world_map:
            name = item_map['name']  # 国家名
            count = int(item_map[item])  # 该国家人数
            map_data[name] = count
        map_data['中国'] = china_map[item]
        map.add(
            series_name=maps[item],  # 名称
            data_pair=list(map_data.items()),  # 传入数据
            maptype='world',  # 地图类型
            is_map_symbol_show=False,  # 不显示标记
            name_map=name_map)

    map.set_global_opts(
        visualmap_opts=options.VisualMapOpts(max_=1100000,
                                             is_piecewise=True,
                                             pieces=[
                                                 {
                                                     "min": 500000
                                                 },
                                                 {
                                                     "min": 200000,
                                                     "max": 499999
                                                 },
                                                 {
                                                     "min": 100000,
                                                     "max": 199999
                                                 },
                                                 {
                                                     "min": 50000,
                                                     "max": 99999
                                                 },
                                                 {
                                                     "min": 10000,
                                                     "max": 49999
                                                 },
                                                 {
                                                     "max": 9999
                                                 },
                                             ]))

    map.set_series_opts(label_opts=options.LabelOpts(is_show=False))  # 不显示国家名
    map.add_js_funcs("""document.body.style.backgroundColor="#87CEFA"
    """)
    map.render('map.html')  # 命名并保存
コード例 #12
0
ファイル: test_map.py プロジェクト: xuzj123456/pythonfiles
def test_map_item_base(fake_writer):
    location_name = ["广东"]
    location_data = [[100, 200, 300, 400]]
    mock_data = [
        opts.MapItem(name=d[0], value=d[1])
        for d in list(zip(location_name, location_data))
    ]

    c = Map().add("商家A", mock_data, "china")
    c.render()
    _, content = fake_writer.call_args[0]
    assert_equal(c.theme, "white")
    assert_equal(c.renderer, "canvas")
コード例 #13
0
def show_map_charts(df):
    # 计数,[0:10]取前10
    city_num = df['province'].value_counts()  # 应该是按省份显示的
    # 返回index列表和value列表组成的元组[('北京', 62), ('上海', 50)],再将元组转换成列表[['北京', 62], ['上海', 50]]
    city_list = [
        list(z) for z in zip(city_num.index.tolist(), city_num.values.tolist())
    ]
    map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px'))
    map1.add(series_name='评论数量', data_pair=city_list, maptype='china')
    map1.set_global_opts(title_opts=opts.TitleOpts(title='评论用户国内城市分布'),
                         visualmap_opts=opts.VisualMapOpts(max_=50),
                         toolbox_opts=opts.ToolboxOpts())
    map1.render('charts/map_chart.html')
コード例 #14
0
def chinaMap(value):
    province_distribution = {
        '河南': 45.23,
        '北京': 37.56,
        '河北': 21,
        '辽宁': 12,
        '江西': 6,
        '上海': 20,
        '安徽': 10,
        '江苏': 16,
        '湖南': 9,
        '浙江': 13,
        '海南': 2,
        '广东': 22,
        '湖北': 8,
        '黑龙江': 11,
        '澳门': 1,
        '陕西': 11,
        '四川': 7,
        '内蒙古': 3,
        '重庆': 3,
        '云南': 6,
        '贵州': 2,
        '吉林': 3,
        '山西': 12,
        '山东': 11,
        '福建': 4,
        '青海': 1,
        '天津': 1,
        '其他': 1
    }
    #provice = list(province_distribution.keys())
    #values = list(province_distribution.values())
    provice = list()
    values = list()
    for item in value:
        values.append(item['total']['confirm'])
        provice.append(item['name'])
    #print(provice)

# print(values)
    map = Map("疫情地图", width=1200, height=600)
    map.add("疫情",
            provice,
            values,
            visual_range=[0, 500],
            maptype='china',
            is_visualmap=True,
            visual_text_color='#000',
            is_label_show=True)
    map.render(path="中国地图.html")
コード例 #15
0
def show_map_charts():
    city_num = df['city_dealed'].value_counts()
    city_num.drop('国外', inplace=True)
    city_num.drop('未填写', inplace=True)

    map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px'))
    map1.add("", [
        list(z) for z in zip(city_num.index.tolist(), city_num.values.tolist())
    ],
             maptype='china')
    map1.set_global_opts(title_opts=opts.TitleOpts(title='评论者国内城市分布'),
                         visualmap_opts=opts.VisualMapOpts(max_=50),
                         toolbox_opts=opts.ToolboxOpts())
    map1.render()
コード例 #16
0
ファイル: analysis.py プロジェクト: microcosmx/algorithms
def DrawMap(city_names):
	# 假设省会城市最高温度代表该省最高温度
	attrs = ['北京', '天津', '上海', '重庆',
			 '河北', '山西', '辽宁', '吉林',
			 '黑龙江', '江苏', '浙江', '安徽',
			 '福建', '江西', '山东', '河南',
			 '湖北', '湖南', '广东', '四川']
	values = []
	for cn in city_names:
		data = qr.get_data(cn)
		values.append(data['Htemperature'])
	map_ = Map('气温分布图', width=1200, height=600)
	map_.add('', attrs, values, maptype='china', is_visualmap=True, visual_text_color='#000')
	map_.render('weatherMap.html')
コード例 #17
0
def college_map():
    db = DataBase()
    sql = "select area, count(id) from college group by area"
    db.cur.execute(sql)
    ret = db.cur.fetchall()
    db.close()
    college_map = Map(init_opts=opts.InitOpts(width="1400px", height="900px")) \
        .set_global_opts(title_opts=opts.TitleOpts(title="全国高校分布图"), visualmap_opts=opts.VisualMapOpts(max_=150), )
    college_map.add(
        '高校数量',
        list(ret),
    ).set_series_opts(label_opts=opts.LabelOpts(
        is_show=True, color="#00f", formatter="{b}:{c}"))
    college_map.render('college_map.html')
コード例 #18
0
def get_data():

    # API地址
    url = 'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist'

    # 添加请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'
    }

    # 获取结果
    res = requests.get(url=url,  headers=headers).text
    # 转为json
    data = json.loads(res)
    # 获取数据
    name = jsonpath.jsonpath(data, '$..name')
    confirm = jsonpath.jsonpath(data, '$..confirm')
    # 配对
    data_list = zip(name, confirm)
    # print(list(data_list))

    # 绘制地图
    map = Map(init_opts=opts.InitOpts(width="1900px", height="900px", page_title="全球疫情分布图", bg_color="#ADD8E6", theme="white")).add(
        series_name='世界疫情分布图', data_pair=data_list, maptype='world', name_map=nameMap, is_map_symbol_show=False)

    # 设置系列配置项
    map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

    # 设置全局配置项
    # map.set_global_opts(title_opts=opts.TitleOpts(title="国外疫情情况"),
    # visualmap_opts=opts.VisualMapOpts(max_=2000000, is_piecewise=True))

    map.set_global_opts(title_opts=opts.TitleOpts(title="国外疫情情况"),
                        visualmap_opts=opts.VisualMapOpts(pieces=[
                            {"min": 500000, "color": "#800000"},
                            {"min": 100000, "max": 500000,
                                "color": "#CC0000"},
                            {"min": 50000, "max": 100000,
                                "color": "#FF0000"},
                            {"min": 10000, "max": 50000,
                                "color": "#FF4500"},
                            {"min": 1000, "max": 10000, "color": "#FF7F50"},
                            {"min": 100, "max": 1000, "color": "#FFA07A"},
                            {"max": 100, "color": "#FFCCCC"},
                        ],
        is_piecewise=True))  # 显示分段式图例

    # 生成文件
    map.render('世界疫情分布图.html')
コード例 #19
0
ファイル: Spider.py プロジェクト: SenQi-666/Epidemic_Spider
 def analysis(self):
     """
     数据分析可视化
     :return:
     """
     data_list = [(i[0], i[3]) for i in self.result]
     with open('CountryMap.json', 'r') as f:
         country_map = json.load(f)
     map = Map(options.InitOpts(width='1366px', height='768px'))
     map.add("确诊病例", data_list, 'world', name_map=country_map, is_map_symbol_show=False)
     map.set_series_opts(label_opts=options.LabelOpts(is_show=False))
     map.set_global_opts(
         title_opts=options.TitleOpts(title='全球疫情数据可视化展示'),
         visualmap_opts=options.VisualMapOpts(max_=100000)
     )
     map.render('World_Epidemic_Analysis.html')
コード例 #20
0
def draw_map_world(data, to_file, svg_name, label_name, number_max):
    """
    画地图
    :param data:
    :param to_file:
    :param svg_name:
    :param label_name: 图例名称
    :param number_max: 最大值
    :return:
    """
    geo = Map(init_opts=opts.InitOpts(width="800px", height="600px", bg_color='rgb(255, 255, 255)')) \
        .add(label_name, data, maptype="world") \
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                         showLegendSymbol=False) \
        .set_global_opts(legend_opts=opts.LegendOpts(item_width=50,
                                                     item_height=30,
                                                     textstyle_opts=opts.TextStyleOpts(font_size=30)),
                         visualmap_opts=opts.VisualMapOpts(min_=0,
                                                           max_=int(number_max),
                                                           background_color='rgb(255, 255, 255)',
                                                           is_piecewise=True,
                                                           item_width=50,
                                                           item_height=30,
                                                           textstyle_opts=opts.TextStyleOpts(font_size=30)),
                         toolbox_opts=opts.ToolboxOpts(
                             feature=opts.ToolBoxFeatureOpts(
                                 data_zoom=opts.ToolBoxFeatureDataZoomOpts(is_show=False),
                                 # brush=opts.ToolBoxFeatureBrushOpts(is_show=False),
                             )
                         ),
                         )
    # geo.render(to_file)
    make_snapshot(snapshot, geo.render(to_file), svg_name)  # 生成svg图片
コード例 #21
0
 def analysisArea(self, title='分析好友地域分布', friends_info=None):
     area_infos = {'未知': 0}
     for item in friends_info.get('province'):
         if not item: area_infos['未知'] += 1
         else:
             if item in area_infos: area_infos[item] += 1
             else: area_infos[item] = 1
     map_ = Map(init_opts=dict(theme='purple-passion', page_title=title))
     map_.add(title,
              data_pair=tuple(zip(area_infos.keys(), area_infos.values())),
              maptype='china')
     map_.set_global_opts(
         title_opts=opts.TitleOpts(title=title),
         visualmap_opts=opts.VisualMapOpts(max_=200),
     )
     map_.render(os.path.join(self.savedir, '%s.html' % title))
コード例 #22
0
def plt_data(name, confirm_all):
    data_list = list(zip(name, confirm_all))
    map = Map(opts.InitOpts(width='1600px',
                            height='600px')).add(series_name='累计确诊',
                                                 data_pair=data_list,
                                                 maptype="china",
                                                 is_map_symbol_show=False)
    map.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    map.set_global_opts(title_opts=opts.TitleOpts("中国疫情"),
                        visualmap_opts=opts.VisualMapOpts(
                            range_color=Faker.visual_color, max_=1000))  # 图例显示
    map.render("html/中国疫情分布图.html")
    plt.rcParams['font.sans-serif'] = ['FangSong']
    plt.bar(range(len(confirm_all)), confirm_all, tick_label=name)
    plt.xticks(rotation=270)
    plt.savefig("imgdata/中国疫情柱状图")
    print("中国数据可视化成功,文件名:中国疫情分布图.html、中国疫情柱状图.png")
コード例 #23
0
ファイル: condition.py プロジェクト: whynot-zyl/my-final
def draw():
    get_data.GetCondition()
    result = {'province': [], 'province_confirmedCount': []}
    result['province'].append('台湾')
    result['province_confirmedCount'].append(18)
    result['province'].append('香港')
    result['province_confirmedCount'].append(56)
    result['province'].append('澳门')
    result['province_confirmedCount'].append(10)

    # 批量删除多余字符的函数
    def replace_something(source_str, replace_list):
        for line in replace_list:
            source_str = source_str.replace(line, "")
        return source_str

    with open("virus.csv", 'r', encoding='UTF-8') as csvFile:
        reader = csv.reader(csvFile)  # 读取文件数据
        for item in reader:
            if reader.line_num == 1:
                continue
            # 定义删除的字串列表
            replace_list = ['省', '市', '壮族自治区', '维吾尔自治区', '回族自治区', '自治区']
            # 调用删除字串的函数
            province_name = replace_something(item[0], replace_list)
            if len(result['province']) == 34:
                break
            if province_name in result['province']:
                continue
            else:
                result['province'].append(province_name)
                result['province_confirmedCount'].append(int(item[2]))
    # 绘制地图
    from pyecharts import options as opts
    from pyecharts.charts import Map

    map = Map()
    map.add("确诊人数", [
        list(z)
        for z in zip(result['province'], result['province_confirmedCount'])
    ], 'china')
    map.set_global_opts(
        title_opts=opts.TitleOpts(title="疫情地图"),
        visualmap_opts=opts.VisualMapOpts(max_=2000),
    )
    map.render(path="疫情地图.html")
コード例 #24
0
def display_recent_global_distribution(pic_file, maxCount=200, **kwargs):
    """
    display the distribution of recent total numbers of confirmed patients.

    Parameters
    ----------
    pic_file: str
        absolute path of the generated figure.
    maxCount: int
        maximumn count of colorbar. (default: 200)
    """

    conn = db.connect(dbFile)
    cu = conn.cursor()

    OverallDf = pd.read_sql_query("""select * from Region_Data""", conn)
    OverallDf['updateTime'] = OverallDf['updateTime'].astype('int64')

    recentData = OverallDf.groupby('provinceShortName').apply(
        lambda t: t[t['updateTime'] == t['updateTime'].max()])

    recentData = recentData.groupby('country').agg({
        'confirmedCount': 'sum',
        'suspectedCount': 'sum',
        'updateTime': 'mean'
    })
    recentData['date'] = pd.to_datetime(recentData['updateTime'] / 1000,
                                        unit='s')

    time = recentData[recentData.index == '中国']['updateTime']
    data = [[
        searchCountryENName(recentData.index[i]),
        int(recentData['confirmedCount'][i])
    ] for i in range(recentData.shape[0])]

    map_3 = Map()
    map_3.add("{0} worldwide COVID-19 patients distribution".format(
        recentData['date'][1].strftime('%Y-%m-%d')),
              data,
              maptype='world',
              is_map_symbol_show=False)
    map_3.set_series_opts(
        label_opts=opts.LabelOpts(is_show=False, font_size=100))
    map_3.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=maxCount),
                          title_opts=opts.TitleOpts(title=""))

    if 'notebook' in kwargs.keys():
        if kwargs['notebook']:
            map_3.render_notebook()
    else:
        html_file = '{0}.html'.format(os.path.splitext(pic_file)[0])
        tmpHtmlFile = map_3.render()
        shutil.move(tmpHtmlFile, html_file)
        make_snapshot(snapshot,
                      file_name=html_file,
                      output_name=pic_file,
                      is_remove_html=False,
                      **kwargs)
コード例 #25
0
ファイル: plot_maps.py プロジェクト: stkobsar/coronavirus
def map_total_cases(csv):
    """
    Description: exports an html file with an interactive map showing the latest total cases
    registered per country in the planet
    in a two-ax chart for countries with p-score > 1
    :param owid_data: OWID main coronavirus dataset in a pandas dataframe format,
                        it can be already processed with clean_data()
    :export: HTML file with a pyecharts interactive map
    """

    input_df = pd.read_csv(csv)

    if input_df.index.name == "date":
        input_df = input_df[["location", "total_cases"]].dropna()
    else:
        input_df = input_df[["date", "location", "total_cases"]].set_index("date").dropna()

    map_df = input_df.loc[input_df.groupby('location').total_cases.idxmax()].head(
        len(input_df["location"].unique()) - 1)

    map_df.reset_index(drop=True, inplace=True)

    country = list(map_df["location"])
    totalcases = list(map_df["total_cases"])

    list1 = [[country[i], totalcases[i]] for i in range(len(country))]
    map_1 = Map(init_opts=opts.InitOpts(width="1000px", height="460px"))
    map_1.add("Total Confirmed Cases",
              list1,
              maptype="world",
              is_map_symbol_show=False)
    map_1.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    map_1.set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=1100000, is_piecewise=True, pieces=[
            {"min": 1000000},
            {"min": 600000, "max": 999999},
            {"min": 200000, "max": 599999},
            {"min": 50000, "max": 119999},
            {"min": 10000, "max": 49999},
            {"max": 9999}, ]),
        title_opts=opts.TitleOpts(
            title='Casos confirmados de COVID-19',
            subtitle="Últimos datos disponibles",
            pos_left="center",
            padding=0,
            item_gap=2,
            title_textstyle_opts=opts.TextStyleOpts(color="darkblue",
                                                    font_weight="bold",
                                                    font_family="Courier New",
                                                    font_size=30),
            subtitle_textstyle_opts=opts.TextStyleOpts(color="grey",
                                                       font_weight="bold",
                                                       font_family="Courier New",
                                                       font_size=13)),
        legend_opts=opts.LegendOpts(is_show=False))

    return map_1.render('map_cases.html')
コード例 #26
0
    def make_geo_map(self):
        """
        生成世界地图,根据各国电影发行量
        :return:
        """
        # print(get_current_time() + '|-------> 正在生成 世界各国电影发行量 图表...')
        # 导入TOP500电影数据
        csv_path = os.path.abspath(os.path.join(os.path.dirname("__file__"), os.path.pardir, "moviespider", "movie_info_top500.csv"))
        rows = pd.read_csv(csv_path, encoding='utf-8', dtype=str)
        # 分析并统计数据
        col_country = rows['国别'].to_frame()
        res = col_country.groupby('国别')['国别'].count().sort_values(ascending=False)
        raw_data = [i for i in res.items()]

        # 导入映射数据,英文名 -> 中文名
        country_name = pd.read_json('countries_zh_to_en.json', orient='index')
        stand_data = [i for i in country_name[0].items()]

        # 数据转换
        res_code = []
        for raw_country in raw_data:
            for stand_country in stand_data:
                if stand_country[1] in raw_country[0]:
                    res_code.append(stand_country[0])
        code = pd.DataFrame(res_code).groupby(0)[0].count().sort_values(ascending=False)
        data = []
        for k, v in code.items():
            data.append([k, v])

        # 制作图表
        c = Map()
        c.add("电影发行量", data, "world")
        c.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        c.set_global_opts(title_opts=opts.TitleOpts(title="电影TOP500榜单中 - 世界各国电影发行量"),
                          visualmap_opts=opts.VisualMapOpts(max_=55))
        htmlPath = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(__file__))), "analyse_data", "世界各国电影发行量.html"))
        pngPath = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(__file__))), "analyse_data", "世界各国电影发行量.png"))
        # 生成html
        c.render(htmlPath)
        # 生成png
        # make_snapshot(snapshot, c.render(), pngPath)
        # print(get_current_time() + '|-------> 已生成 世界各国电影发行量 图表...')
        return c
コード例 #27
0
def nowconfirm_map(data_json,virus_nowconfirm_dict):
    map = Map(init_opts=opts.InitOpts(width="1900px", height="900px"))
    map.set_global_opts(
    title_opts=opts.TitleOpts(title="实时疫情地图 %s\n\n累计确诊 %d\n现有确诊 %d\n现有疑似 %d\n输入病例 %d\n累计治愈 %d\n累计死亡 %d" \
                            %(data_json['lastUpdateTime'],data_json['chinaTotal']['confirm'],data_json['chinaTotal']['nowConfirm'], \
                                data_json['chinaTotal']['suspect'],data_json['chinaTotal']['importedCase'], \
                                data_json['chinaTotal']['heal'],data_json['chinaTotal']['dead'])),
    visualmap_opts=opts.VisualMapOpts(max_=3600, is_piecewise=True,
            pieces=[
            {"max": 1999999, "min": 1000, "label": "10000人及以上", "color": "#8A0808"},
            {"max": 999, "min": 200, "label": "200-999人", "color": "#B40404"},
            {"max": 199, "min": 50, "label": "50-199人", "color": "#DF0101"},
            {"max": 49, "min": 30, "label": "30-49人", "color": "#F78181"},
            {"max": 29, "min": 10, "label": "10-29人", "color": "#F5A9A9"},
            {"max": 9, "min": 0, "label": "1-9人", "color": "#FFFFCC"},
            ], ) #最大数据范围,分段
    )
    virus_nowconfirm = list(virus_nowconfirm_dict.items())
    # {names[i]:v[i] for i in range(len(names))}
    map.add("现有确诊", data_pair=virus_nowconfirm, maptype="china", is_roam=True)
    map.render('html\全国实时现有确诊疫情地图.html')
コード例 #28
0
ファイル: search1.py プロジェクト: Pleidy/Python
def analyseLocation(friends):
    keys = []
    values = []
    province = list(map(lambda x: x['Province'], friends[1:]))

    for i in set(province):
        keys.append(i)
        values.append(province.count(i))

    print(keys)
    print(values)
    maps = Map('中国地图', '中国地图', width=1200, height=600)
    maps.add("",
             keys,
             values,
             visual_range=[0, 50],
             maptype='china',
             is_visualmap=True,
             visual_text_color='#000')
    maps.show_config()
    maps.render(path="localtion.html")
コード例 #29
0
def display_recent_overall_distribution(pic_file, maxCount=500, **kwargs):
    """
    display the distribution of recent total numbers of nation-wide confirmed
    patients in China.

    Parameters
    ----------
    pic_file: str
        absolute path of the generated figure.
    maxCount: int
        maximumn count of colorbar. (default: 500)
    """

    conn = db.connect(dbFile)
    cu = conn.cursor()
    cu.execute("""select provinceShortName, confirmedCount
        from Region_Data
        where updateTime in (select max(updateTime)
        from Region_Data r_d
        where r_d.country='中国' and r_d.region_id=Region_Data.region_id)
        group by Region_Data.region_id;
        """)
    recentProvinceData = cu.fetchall()

    cu.execute("""select max(updateTime) from Region_Data;""")
    recentTime = cu.fetchone()
    recentTimeObj = dt.datetime.utcfromtimestamp(int(recentTime[0]) / 1000)

    # color-plot
    list1 = [[recentProvinceData[i][0], recentProvinceData[i][1]]
             for i in range(len(recentProvinceData))]
    map_1 = Map()
    map_1.add("{0}全国各省感染总人数".format(recentTimeObj.strftime('%y-%m-%d')),
              list1,
              maptype="china",
              is_map_symbol_show=False)
    map_1.set_global_opts(title_opts=opts.TitleOpts(
        title="{0}全国各省感染总人数".format(recentTimeObj.strftime('%y-%m-%d'))),
                          visualmap_opts=opts.VisualMapOpts(max_=maxCount))

    if 'notebook' in kwargs.keys():
        if kwargs['notebook']:
            map_1.render_notebook()
    else:
        html_file = '{0}.html'.format(os.path.splitext(pic_file)[0])
        tmpHtmlFile = map_1.render()
        shutil.move(tmpHtmlFile, html_file)
        make_snapshot(snapshot,
                      file_name=html_file,
                      output_name=pic_file,
                      is_remove_html=False,
                      **kwargs)
コード例 #30
0
def promap():
    # attr, value要显示的数值
    value = [20, 100]
    attr = ['余杭区', '萧山区']

    # 图框的基本特性
    m = Map('杭州地图示例图', width=600, height=400)

    # 添加数据到图框中
    m.add('',
          attr,
          value,
          maptype=u'杭州',
          visual_range=[0, 100],
          is_visualmap=True,
          visual_text_color='#000')

    # show_config() 打印输出图表的所有配置项
    m.show_config()

    # render() 生成 .html 文件
    m.render()