def geo(): g = Geo(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION)) g.add_schema(maptype='广州') # 定义坐标对应的名称,添加到坐标库中 add_coordinate(name, lng, lat) names = list(df['店铺名称']) lng = list(df['经度']) lat = list(df['纬度']) for i in range(len(names)): g.add_coordinate(names[i], lng[i], lat[i]) # 定义数据对, data_pair = [(name, 50) for name in names] # 将数据添加到地图上 g.add('', data_pair, type_=GeoType.EFFECT_SCATTER, symbol_size=3) # 设置样式 g.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) g.set_global_opts( visualmap_opts=opts.VisualMapOpts(is_show=False), title_opts=opts.TitleOpts(title="广州美食分布"), ) g.render('广州美食分布.html') return g
def create_city_map(df): df1 = df[df["country"] == "中国"] df1 = df1.copy() df1["city"] = df1["city"].str.replace("市", "") df_num = df1.groupby("city")["city"].agg( count="count").reset_index().sort_values(by="count", ascending=False) df_city = df_num["city"].values.tolist() df_count = df_num["count"].values.tolist() # 初始化配置 geo = Geo(init_opts=opts.InitOpts(width="800px", height="400px")) # 中国地图 geo.add("", [list(z) for z in zip(df_city, df_count)], "china") # 设置全局配置项,标题、工具箱(下载图片)、颜色图例 geo.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(is_piecewise=True)) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) map.render("抖音大V城市分布情况.html")
def get_salary_city(self): sql = """ select city,cast(sum((max_salary+min_salary)/2)/count(*) as signed) salary from lagou_job GROUP BY city order by salary desc """ cursor.execute(sql) key = [] values = [] for info in cursor.fetchall(): if not info[0] == '海外': key.append(info[0]) values.append(info[1]) max = values[0] geo = Geo(init_opts=opts.InitOpts(width="1600px", height="1000px")) geo.add_schema( maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="#DDF8FF", border_color="#111"), ) geo.add("薪资水平", [list(z) for z in zip(key, values)], type_="effectScatter") geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=max), title_opts=opts.TitleOpts(title="各城市工资水平,单位K")) file = data_store + "\\" + "salary.html" check_path(file) geo.render(file)
def generate_drug_map(date, type='疫苗'): data = fetch_drug_date(date, type) points = [] for country, num in data: poins.append('1', random.sample(random_points[country], num)) count = [1] * len(data) addresses = [] json_data = {} for address in test_data: json_data[address[0]] = [address[1], address[2]] addresses.append(address[0]) json_str = json.dumps(json_data, ensure_ascii=False, indent=4) with open('test_data.json', 'w', encoding='utf-8') as json_file: json_file.write(json_str) geo = Geo() geo.add_schema(maptype='world') geo.add_coordinate_json(json_file='test_data.json') geo.add('研发中的{}类药物'.format(type), [list(z) for z in zip(addresses, data)], type_=ChartType.EFFECT_SCATTER, color='#1e90ff', symbol_size=10, symbol='diamond') geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False), effect_opts=opts.EffectOpts(scale=5)) geo.set_global_opts(title_opts=opts.TitleOpts(title="Geo-EffectScatter"), tooltip_opts=opts.TooltipOpts(is_show=False)) geo.render(path='3.html')
def task(): city = '北京' g = Geo(init_opts=opts.InitOpts(width = '1600px', height='800px')) g.add_schema(maptype=city) # 数据库连接 db = pymysql.connect(host = 'localhost', user='******', password='******', port=3306, db = 'educationalResource_bj') cursor = db.cursor() sql = 'select * from educationalResourceMap' cursor.execute(sql) results = cursor.fetchall() db.close() #print(results[0][1]) for result in results: g.add_coordinate(result[1], result[6], result[7]) data_pair = [] for result in results: judge = 0 if result[3] == 'gbyey': judge = 10 elif result[3] == 'xx': judge = 20 elif result[3] == 'zx': judge = 30 elif result[3] == 'zyjyxx': judge = 50 elif result[3] == 'gdyx': judge = 80 else : judge = 101 data_pair.append((result[1], judge)) #print(data_pair) # Geo 图类型,有 scatter, effectScatter, heatmap, lines 4 种,建议使用 # from pyecharts.globals import GeoType # GeoType.GeoType.EFFECT_SCATTER,GeoType.HEATMAP,GeoType.LINES # 将数据添加到地图上 g.add('', data_pair, type_=GeoType.EFFECT_SCATTER, symbol_size=5) # 设置样式 g.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 自定义分段 color 可以用取色器取色 pieces = [ {'min': 1, 'max': 10, 'label': '幼儿园', 'color': '#3700A4'}, {'min': 10, 'max': 20, 'label': '小学', 'color': '#81AE9F'}, {'min': 20, 'max': 30, 'label': '中学', 'color': '#E2C568'}, {'min': 30, 'max': 50, 'label': '职业技术学校', 'color': '#FCF84D'}, {'min': 50, 'max': 100, 'label': '高等院校', 'color': '#DD0200'}, {'min': 100, 'max': 200, 'label': '特殊教育学校', 'color': '#DD675E'}, ] # is_piecewise 是否自定义分段, 变为true 才能生效 g.set_global_opts( visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=pieces), title_opts=opts.TitleOpts(title="{}-学校分布".format(city)), ) return g
def func3(path="temp.csv"): win = tkinter.Tk() x = win.winfo_screenwidth() y = win.winfo_screenheight() pieces = [ { 'min': 0, 'max': 0, 'label': '数据无效', 'color': '#00B2EE' }, { 'min': 1, 'max': 1, 'label': '数据疑似为假', 'color': '#71C671' }, { 'min': 2, 'max': 2, 'label': '数据疑似为真', 'color': '#CD4F39' }, ] data = pd.read_csv(path) # 读取数据 geo_sight_coord = data[['dx', 'dy']] # 构造位置字典数据 # data_pair = [(str(i), 1) for i in range(len(geo_sight_coord))] # 构造项目租金数据 data_pair = [] for index, row in data.iterrows(): data_pair.append((str(index), int(row['flag_legal']))) g = Geo(init_opts=opts.InitOpts( page_title="车辆轨迹", width=str(x / 1.1) + 'px', height=str(y / 1.1) + 'px', )) # 地理初始化 g.add_schema(maptype="江西") # 限定上海市范围 for key, value in geo_sight_coord.iterrows(): # 对地理点循环 g.add_coordinate(str(key), value['dx'], value['dy']) # 追加点位置 g.add("", data_pair, symbol_size=4) # 追加项目名称和租金 g.set_series_opts( label_opts=opts.LabelOpts(is_show=False), type='scatter', ) # 星散点图scatter g.set_global_opts(visualmap_opts=opts.VisualMapOpts( is_piecewise=True, pieces=pieces, pos_left='left', pos_bottom="100px", ), title_opts=opts.TitleOpts(title="车辆轨迹")) g.render(path="车辆加油地图.html")
def geo_base(data): city_list, province_list = data # 好友全国省份分布图 geo = Geo(init_opts=opts.InitOpts(theme="vintage")) for city in city_list: try: geo.add_schema(maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="gray")) geo.add("微信好友分布地图", [city], type_="effectScatter", symbol_size=10) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts( visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="微信好友分布地图"), ) except: pass print("正在制作好友全国分布图") make_snapshot(driver, geo.render(), "geo.png") # 广东好友热力图 # geo = Geo(init_opts=opts.InitOpts(theme="vintage")) # for city in city_list: # try: # geo.add_schema(maptype="广东", itemstyle_opts=opts.ItemStyleOpts(color="gray")) # geo.add("广东好友热力图", [city], type_="heatmap", symbol_size=10) # geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="热力图"), # toolbox_opts=opts.ToolboxOpts()) # except: # pass # # print("正在制作好友广东热力图") # make_snapshot(driver, geo.render(), "heat.png") # 好友全国地理图 maps = Map() maps.add("", province_list, "china") maps.set_global_opts(title_opts=opts.TitleOpts(title="微信好友分布图"), visualmap_opts=opts.VisualMapOpts()) print("正在制作好友地理图") make_snapshot(driver, geo.render(), "map.png") # 词云图 c = (WordCloud().add("", city_list, word_size_range=[15, 50], shape="diamond", word_gap=10).set_global_opts( title_opts=opts.TitleOpts(title="diamond"))) print("正在制作好友城市词云图") make_snapshot(driver, c.render(), "world.png")
def locate_on_map(addr, longtitude, latitude): g = Geo().add_schema(maptype="上海") g.add_coordinate(addr, longtitude, latitude) data_pair = [(addr, 1)] g.add('', data_pair, type_=GeoType.EFFECT_SCATTER, symbol_size=20) g.set_series_opts(label_opts=options.LabelOpts(is_show=False)) g.set_global_opts(title_opts=options.TitleOpts(title="地图标点测试")) g.render_notebook() print("process finished")
def out_data(date_number): city_list = ('南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市', '贺州市', '河池市', '来宾市', '崇左市') city_od_list_pro = [] city_od_values_pro = [] for i in city_list: city = i workbook = xlrd.open_workbook(f'.\\{path}\\{city}-迁入来源地规模指数.xlsx') sheet = workbook.sheet_by_index(0) city_od_list = [] city_od_values = [] a = 0 cols = sheet.col_values(1)[1:] cols_date = sheet.col_values(date_number + 1)[1:] for j in cols: city_od = (city, j) city_od_v = (j, cols_date[a]) city_od_list.append(city_od) city_od_values.append(city_od_v) a += 1 city_od_list_pro.append(city_od_list) city_od_values_pro.append(city_od_values) od_list = [] os_values = [] for i in range(14): for j in range(14): od_list.append(city_od_list_pro[i][j]) os_values.append(city_od_values_pro[i][j]) # print(od_list) # print(os_values) geo = Geo() # 地图类型,世界地图可换为world geo.add_schema(maptype="广西") # 添加数据点 geo.add("%", os_values, type_=ChartType.EFFECT_SCATTER) # 添加流向,type_设置为LINES,涟漪配置为箭头,提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', # 'diamond', 'pin', 'arrow', 'none' geo.add("迁出城市", od_list, type_=ChartType.LINES, effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=5, color="yellow"), linestyle_opts=opts.LineStyleOpts(curve=0.2), is_large=True) # 不显示标签 geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 设置图标标题,visualmap_opts=opts.VisualMapOpts()为左下角的视觉映射配置项 geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="广西地市迁徙数据")) # 直接在notebook里显示图表 geo.render_notebook() # 生成html文件,可传入位置参数 geo.render(f".\\out_od\\广西-2020.10.{date_number}迁出OD图.html")
def base_info(): geo = Geo() geo.add_schema(maptype="河南") # 加入自定义的点,格式为 # 地图形式 type_=ChartType.HEATMAP geo.add("geo", data, type_=ChartType.EFFECT_SCATTER) # is_show:是否显示经纬度 geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=10), title_opts=opts.TitleOpts(title="Geo-河南省地图")) return geo
def quakes(): # 对地震数据进行绘图 quakes_data = pd.read_csv("quakes.csv") latitude = quakes_data['lat'].values longitude = quakes_data['long'].values mag = quakes_data['mag'].values index = list(range(len(mag))) #可视化 geo = Geo() geo.add_schema(maptype='world') for i in range(len(index)): geo.add_coordinate(index[i], longitude[i], latitude[i]) data_pair = [list(z) for z in zip(index, mag)] # 将数据添加进图中 geo.add('震源', data_pair, symbol_size=3) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 设置显示区间 pieces = [ { 'max': 4, 'label': '4级以下', 'color': '#50A3BA' }, { 'min': 4, 'max': 5, 'label': '4-5级', 'color': '#E2C568' }, { 'min': 5, 'max': 6, 'label': '5-6级', 'color': '#D94E5D' }, { 'min': 6, 'max': 7, 'label': '6-7级', 'color': '#3700A4' }, { 'min': 7, 'label': '7级以上', 'color': '#81AE9F' }, ] geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=pieces), title_opts=opts.TitleOpts(title="震源分布")) #导出图像 geo.render('地震地点分布.html')
def drawGeoMap(excel_path, mtype='china'): data = xlrd.open_workbook(excel_path) table = data.sheet_by_index(0) nrow = table.nrows dates = table.row_values(0) # print(dates) allData = {} for i in range(1, nrow): aNameData = {} sname = f"{table.cell(i,0).value} {table.cell(i,1).value}" for j in range(2, len(dates)): value = table.cell(i,j).value try: value = json.loads(value) value = value[1:4] except Exception as e: print(f"error: {e}") pass aNameData[dates[j]] = value allData[sname] = aNameData # print(f'学生数:{len(allData)}') title = '2021年1月21日能仔位置' geo = Geo(init_opts=opts.InitOpts(width='1000px', height='580px', page_title=title, theme=ThemeType.LIGHT)) geo.add_schema(maptype=mtype) for name, data in allData.items(): for date, location in data.items(): aNameLocation = [] try: longitude, latitude, address = location except Exception as e: print(f"Error: {e}") longitude, latitude, address = DEFAULT_Location # aNameLocation.append(('%s %s\n' % (name, date), address)) # geo.add_coordinate('%s %s' % (name, date), longitude, latitude) sno, sname = name.split(' ') # print(sno, sname) aNameLocation.append(('%s %s' % (sno, sname), date)) geo.add_coordinate('%s %s' % (sno, sname), longitude, latitude) geo.add(name, aNameLocation, type_=ChartType.EFFECT_SCATTER) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts(legend_opts=opts.LegendOpts(type_='scroll', orient='vertical', pos_left='left', pos_top='10%', is_show=False), title_opts=opts.TitleOpts(title=title)) map_path = os.path.join(dir_path, '2021年1月21日能仔位置地图.html') geo.render(map_path) # os.system(f'"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" {os.path.abspath(map_path)}') print('done.')
def base_info(): print(data) geo = Geo() geo.add_schema(maptype="china") # 加入自定义的点,格式为 # geo.add_coordinate("自定义点", 80.39770014211535,39.90779994986951) # 地图形式 type_=ChartType.HEATMAP geo.add("geo", data, type_=ChartType.EFFECT_SCATTER) # is_show:是否显示经纬度 geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-基本示例")) return geo
def draw_map(data_pair, data_coordinate) -> Geo: # ->常常出现在python函数定义的函数名后面,为函数添加元数据,描述函数的返回类型,从而方便开发人员使用。 g = Geo() # 选择要显示的地图 g.add_schema(maptype="重庆", center=[106.531638,29.561081], itemstyle_opts=opts.ItemStyleOpts(color="#575D57")) # 使用add_coordinate(name, lng, lat)添加坐标点和坐标名称 for item in data_coordinate: g.add_coordinate(item['name'], item['lng'], item['lat']) # 将数据添加到定义的地图上 g.add('', data_pair, type_=GeoType.EFFECT_SCATTER, symbol_size=5) # type_=ChartType.HEATMAP # 设置样式 g.set_series_opts(label_opts=opts.LabelOpts(is_show=False))\ .set_global_opts(visualmap_opts=opts.VisualMapOpts(min_=60, max_ = 200, is_piecewise=True),title_opts=opts.TitleOpts(title="重庆房源分布图")) return g
def DrawGeo(city_names): data = [] for cn in city_names: temp = qr.get_data(cn) data.append((cn, temp['pm25'])) geo = Geo('全国部分城市空气质量', 'pm2.5', title_color='#fff', title_pos='center', width=1200, height=600, background_color='#404a59') attr, value = geo.cast(data) geo.add('', attr, value, visual_range=[0, 200], visual_text_color='#fff', symbol_size=15, is_visualmap=True, type='effectScatter') geo.render('weatherGeo.html')
def insert_loc(): g = Geo() data_pair = [] g.add_schema(maptype='china') airport_df = pd.read_excel('CN_airport_info.xlsx', usecols='B,D,E,F,S') for i in range(len(airport_df)): g.add_coordinate(airport_df.iloc[i, 1], float(airport_df.iloc[i, 3]), float(airport_df.iloc[i, 2])) data_pair.append((airport_df.iloc[i, 1], int(airport_df.iloc[i, 4]))) g.add('', data_pair, type_=GeoType.EFFECT_SCATTER, symbol_size=7) g.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) g.set_global_opts( visualmap_opts=opts.VisualMapOpts(is_piecewise=False), title_opts=opts.TitleOpts(title="全国机场分布图"), ) return g
def plot_geolines(plotting_data, geo_cities_coords): c = Geo(init_opts=opts.InitOpts(width='1500px', height='700px')) c.add_schema( maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="#F0CA00", border_color="#111")) # 所有坐标点加进地图 for i in range(0, len(geo_cities_coords)): c.add_coordinate(list(geo_cities_coords.keys())[i], list(geo_cities_coords.values())[i][0], list(geo_cities_coords.values())[i][1]) c.add('仓网结构', plotting_data, type_=GeoType.LINES, linestyle_opts=opts.LineStyleOpts(width=1), label_opts=opts.LabelOpts(is_show=False), ##trail_length=0, is_polyline=True) c.set_global_opts(title_opts=opts.TitleOpts(title="仓网结构")) c.render('二级仓网结构.html')
def geo_base(): city_data = get_data() print(city_data) geo = Geo(init_opts=opts.InitOpts(theme="vintage")) for city in city_data: try: geo.add_schema(maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="gray")) geo.add("微信好友分布地图", [city], type_="effectScatter", symbol_size=10) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts( visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="来自中南海的瓶子"), ) except Exception as e: print(city) pass geo.render("ms_geo.html")
def geo_heatmap(k, v) -> Geo: try: c = Geo() c.add_schema(maptype="china") c.add( "ratio", [list(z) for z in zip(k, v)], type_=ChartType.HEATMAP, ) except TypeError: print("地址有误,开始排错......") with open("place.txt", mode="a") as f: i = 0 c = Geo() c.add_schema(maptype="china") while i < len(k): try: c.add( "ratio", [list(z) for z in zip(k[:i], v[:i])], type_=ChartType.HEATMAP, ) except: print(k[i - 1]) f.writelines(k[i - 1]) f.writelines('\n') del k[i - 1] del v[i - 1] i -= 1 continue else: i += 1 geo_heatmap(k, v) else: c.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) timen = datetime.datetime.now().strftime('%Y-%m-%d') timea = datetime.datetime.now().strftime('%Y-%m-%d %H.%M.%S') c.set_global_opts( visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="2019nCoV{} BY PZW".format(timen))) Geo.render(c, path='{}HEATMAP.html'.format(timea)) print('渲染完毕')
def draw_with_echarts_scatter(): '''使用pyecharts画散点图''' try: device_csv_dir = r'E:/test_opencv/车辆经常停留位置/all_device_data_csv/' pyecharts_device_html_dir = r'E:/test_opencv/车辆经常停留位置/pyecharts_device_html/' if not os.path.exists(device_csv_dir): os.makedirs(device_csv_dir) if not os.path.exists(pyecharts_device_html_dir): os.makedirs(pyecharts_device_html_dir) for item in os.listdir(device_csv_dir): csvlName = device_csv_dir + item df = pd.read_csv(csvlName, encoding='utf-8', low_memory=False) # X = df.drop_duplicates(subset=['longitude', 'latitude']) X = df device_id = X['device_id'].iloc[0] # 取组内第一个device_id用于存csv用 staff_id = X['staff_id'].iloc[0] # 取组内第一个staff_id用于存csv用 staff_name = X['staff_name'].iloc[0] # 取组内第一个staff_name用于存csv用 car_id = X['car_id'].iloc[0] # 取组内第一个car_id用于存csv用 car_num = X['car_num'].iloc[0] # 取组内第一个car_num用于存csv用 create_time_1 = X['create_time_1'].iloc[0] # 取组内第一个create_time_1用于存csv用 g = Geo() g.add_schema(maptype="china") # 给所有点附上标签 'create_time' for index, row in X.iterrows(): g.add_coordinate(row['create_time'], row['remain_longitude'], row['remain_latitude']) create_time = X.create_time.values.tolist() # 给每个点的值赋为 1 data_list = [[item, 1] for item in create_time] # 画图 # g.add('', data_list, type_=GeoType.HEATMAP, symbol_size=2) g.add('', data_list, type_=GeoType.EFFECT_SCATTER, symbol_size=2) g.set_series_opts(label_opts=options.LabelOpts(is_show=False)) #heatmap # g.set_global_opts(visualmap_opts=options.VisualMapOpts(), title_opts=options.TitleOpts(title=staff_name+"_" + str(car_num) + '_' + str(create_time_1) +'_heatmap' ,pos_left='50%',pos_top='20')) #scatter g.set_global_opts(title_opts=options.TitleOpts(title=staff_name+"_" + str(car_num) + '_' + str(create_time_1) +'_scatter' ,pos_left='50%',pos_top='20')) # 保存结果到 html result = g.render(pyecharts_device_html_dir + str(staff_name) + '_' +str(car_num) + '_' + str(create_time_1) + '.html') except Exception as ex: logger.error("Call method draw_with_echarts_scatter() error!") logger.error("Exception:" + str(ex)) raise ex
def get_company_city(self): sql = """ select city,count(distinct url) as company_count from lagou_company GROUP BY city """ result = cursor.execute(sql) key = [] values = [] for info in cursor.fetchall(): if info[0] != '海外' and re.match('[\u4e00-\u9fa5]', info[0]): key.append(info[0]) values.append(info[1]) geo = Geo(init_opts=opts.InitOpts(width="1600px", height="1000px")) geo.add_schema(maptype="china") geo.add("公司分布", [list(z) for z in zip(key, values)], type_="heatmap") geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="各城市公司分布")) file = data_store + "\\" + "company.html" check_path(file) geo.render(file)
def create_map(df): # 绘制地图 value = [i for i in df['line']] attr = [i for i in df['city']] geo = Geo( "已开通地铁城市分布情况", title_pos='center', title_top='0', width=800, height=400, title_color="#fff", background_color="#404a59", ) geo.add("", attr, value, is_visualmap=True, visual_range=[0, 25], visual_text_color="#fff", symbol_size=15) geo.render("已开通地铁城市分布情况.html")
def get_geo_base(self, _data): ''' plot geo-HeatMap :param _data: gps对应的城市分布(dataframe) :return: geo城市分布图 ''' register_url(self.echarts_url) geo = Geo(init_opts=opts.InitOpts(width="1000px", height="600px", page_title=self.country, bg_color='')) geo.add_schema(maptype=self.country) for _city, _gps in self.geo_dict.items(): geo.add_coordinate(name=_city, longitude=_gps[0], latitude=_gps[1]) geo.add(series_name=self.series_name, data_pair=_data, type_=ChartType.HEATMAP) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts( visualmap_opts=opts.VisualMapOpts(max_=self.threshold_plot), title_opts=opts.TitleOpts(title="Geo-HeatMap")) return geo
def plot_geo_heatmap(all_df): """画热力图 Args: all_df (dataframe): 每日数据图 """ def valid_area(x, v): if x.get_coordinate(v) is not None: return 'Y' else: return 'N' c = Geo(init_opts=opts.InitOpts(width='800px', height='600px')) all_df['valid'] = all_df['name'].apply(lambda x: valid_area(c, x)) all_df['plot_v'] = np.log2(all_df['confirm_all'] / 50 + 1) * 10 c.add_schema(maptype="china") c.add( "ratio", all_df.loc[all_df['valid'] == 'Y', ['name', 'plot_v']].values, type_=ChartType.HEATMAP, ) c.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) c.set_global_opts( visualmap_opts=opts.VisualMapOpts(), legend_opts=opts.LegendOpts(is_show=False), title_opts=opts.TitleOpts( pos_left='center', title='2020 Novel coronavirus pneumonia (NCP) ', title_link= 'https://news.qq.com/zt2020/page/feiyan.htm?from=timeline&isappinstalled=0' )) # map_p = Map() # map_p.set_global_opts(title_opts=opts.TitleOpts(title="实时疫情图"), visualmap_opts=opts.VisualMapOpts(max_=100)) # map_p.add("确诊", data, maptype="china") Geo.render(c, path='E:/HEATMAP.html')
def geo(self, title=None, data=None): """ 地图 :param title: 数据可视化的标题(字符串) :param data: {地名:value} 字典{'宿迁市': 89, '安康市': 46, '佳木斯市': 50,} :return:地图 """ data = data geo = Geo(title, 'data from AQI', title_color='#fff', \ title_pos='center', width=1200, height=600, background_color='#404a59') attr, value = geo.cast(data) # data is not.0 geo.add('', attr, value, visual_range=[0, 200], visual_text_color='#fff', symbol_size=15, is_visualmap=True, is_piecewise=True, visual_split_number=6) self.page.add(geo) self.page.render()
def country_job_num(self): df = pd.read_csv( "D:\PythonFile\LagouSpider\imags\CsvFile\LagouPosition.csv") citys = df.city count = Counter(citys) # count = count.most_common(len(count)) city_list = [] for city in count: city_list.append([city, count[city]]) map = Geo() map.add_schema("china") map.add("geo", city_list, type_=ChartType.EFFECT_SCATTER) map.set_series_opts(label_opts=opt.LabelOpts(is_show=False)) map.set_global_opts( visualmap_opts=opt.VisualMapOpts(), title_opts=opt.TitleOpts(title="Python开发工程师分布情况"), ) map.render( path="D:\PythonFile\LagouSpider\imags\pic/Python开发工程师分布情况.html")
def in_data(city, date_number): workbook = xlrd.open_workbook(f'.\\{path}\\{city}-迁入来源地规模指数.xlsx') sheet = workbook.sheet_by_index(0) city_od_list = [] city_od_values = [] a = 0 cols = sheet.col_values(1)[1:] cols_date = sheet.col_values(date_number + 1)[1:] for j in cols: city_od = (j, city) city_od_v = (j, cols_date[a]) city_od_list.append(city_od) city_od_values.append(city_od_v) a += 1 geo = Geo() # 地图类型,世界地图可换为world geo.add_schema(maptype="广西") # 添加数据点 geo.add("%", city_od_values, type_=ChartType.EFFECT_SCATTER) # 添加流向,type_设置为LINES,涟漪配置为箭头,提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', # 'diamond', 'pin', 'arrow', 'none' geo.add("迁入城市", city_od_list, type_=ChartType.LINES, effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=5, color="yellow"), linestyle_opts=opts.LineStyleOpts(curve=0.2), is_large=True) # 不显示标签 geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 设置图标标题,visualmap_opts=opts.VisualMapOpts()为左下角的视觉映射配置项 geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title=f"{city}迁入数据")) # 直接在notebook里显示图表 geo.render_notebook() # 生成html文件,可传入位置参数 geo.render(f".\\in_od\\{city}-2020.10.{date_number}迁入OD图.html")
def base_info(): geo = Geo() geo.width = "1440px" geo.height = "680px" geo.add_schema(maptype="china") geo.add("确诊人数", confirmed, type_=ChartType.EFFECT_SCATTER) geo.add("疑似人数", suspect, type_=ChartType.EFFECT_SCATTER) geo.add("死亡人数", dead, type_=ChartType.EFFECT_SCATTER) geo.add("治愈人数", healed, type_=ChartType.EFFECT_SCATTER) geo.set_series_opts( label_opts=opts.LabelOpts(is_show=False, background_color='#61a0a8')) geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts( title="中国ncov-2019疫情动态\n上一次数据更新时间:\n" + time)) return geo
def generate_geo_png(geodata, geomax, geomin, geotitle, display_id, map_data_title): from pyecharts import options as opts from pyecharts.charts import Map, Geo from pyecharts.render import make_snapshot # from pyecharts_snapshot.main import make_a_snapshot from snapshot_selenium import snapshot geo = Geo() geo.add_coordinate_json( '/home/CitizenScience/backend/backend/geoCoordJson.js') geo.add_schema(maptype="china") print(geodata) print(map_data_title) geo.add(" ", geodata, symbol_size=10) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts( visualmap_opts=opts.VisualMapOpts(max_=geomax, min_=geomin)) figure_url = "/home/CitizenScience/file/visualization/" + str( display_id) + '_geo.png' # figure_url = str(display_id) + '_geo.png' make_snapshot(snapshot, geo.render(), figure_url, 2) # geo.render(path='render.html') # cmd = "snapshot render.html png" # try: # isRun = os.system(cmd) # print("截图完成") # except: # print("截图失败") # cmd = "mv output.png ../file/visualization/{}".format(figure_url) # try: # isRun = os.system(cmd) # print("移动完成") # except: # print("移动失败") # make_a_snapshot('geo2.html', 'geo3.png') return figure_url
def plot(): # 初始化图表信息 geo = Geo(init_opts=opts.InitOpts(width="96vw", height="96vh", page_title="教育网拓扑图", animation_opts=opts.AnimationOpts( animation=False))) # 添加地图 geo.add_schema(maptype="china") # 添加所有点的地理信息 geo.add_coordinate_json("./data/data.json") # 画中间节点 geo.add("Route", [(i, "Route") for i in Nodes_Route], color="Red", point_size=4, symbol_size=4, effect_opts=opts.EffectOpts(is_show=False)) # 画目的节点 geo.add("Dst", [(i, "Dst") for i in Nodes_Dst], color="SeaGreen", point_size=4, symbol_size=4, effect_opts=opts.EffectOpts(is_show=False)) # 画线 展示拓扑信息 geo.add("", list(Trace), type_=ChartType.LINES, effect_opts=opts.EffectOpts(is_show=False, symbol_size=2), linestyle_opts=opts.LineStyleOpts(curve=0.1)) geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts(title_opts=opts.TitleOpts(title="教育网拓扑图")) # 生成图表到指定文件 geo.render("./dist/render.html")