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")
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")
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()
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")
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')
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()
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("出现错误,停止绘制图表!")
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')
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")
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')
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') # 命名并保存
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")
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')
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")
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()
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')
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')
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')
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')
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图片
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))
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")
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")
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)
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')
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
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')
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")
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)
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()