def drawGeoMap(self, aStuData): sno, sname = aStuData['info'].split(SPLIT_CHAR) sdata = aStuData['data'] try: geo = Geo() def add_data(date, location): # print(location) try: longitude, latitude, address = location except: longitude, latitude, address = DEFAULT_Location geo.add_coordinate(date, longitude, latitude) geo.add(date, [(date, address)], type_=ChartType.EFFECT_SCATTER) geo.add_schema(maptype="china") # add data for date, data in sdata.items(): add_data(date, data) title = f'{sno} {sname} 位置动态' geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.set_global_opts(legend_opts=opts.LegendOpts(orient='vertical', pos_left='left', pos_top='10%'), title_opts=opts.TitleOpts(title=title)) html_path = ospath_join(self.mapsDir, f'{sno}_{sname}.html') geo.render(html_path) except Exception as e: log.error(f'地图生成失败: {sno} {sname} - 可能是包含了文件名不可用的特殊字符', exc_info=True) self._signal.emit(f'错误:{sno} {sname} 地图生成失败!可能原因:工号或提交人姓名中包含文件名不可用的特殊字符,如:*。请修改后重试!')
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 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 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 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 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 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 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 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 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 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")
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 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 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 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
addr_dic[provice] = 0 addr_dic[provice] += 1 # print(addr_dic) # print(addr_dic.items()) sort_addr = sorted(addr_dic.items(), key=lambda item: item[1], reverse=True)[0:10] print(sort_addr) # addr_names = [item[0] for item in sort_addr] # addr_counts = [item[1] for item in sort_addr] # print(addr_names, addr_counts) from pyecharts.charts import Geo from pyecharts.options import LabelOpts, VisualMapOpts, TitleOpts from pyecharts.globals import ChartType geo = Geo() geo.add_schema(maptype="china") geo.add("地点统计", sort_addr, type_=ChartType.EFFECT_SCATTER) geo.set_series_opts(label_opts=LabelOpts(is_show=False)) geo.set_global_opts( visualmap_opts=VisualMapOpts(is_piecewise=True, max_=sort_addr[0][1]), title_opts=TitleOpts(title="撩课Python统计"), ) geo.render("地点统计-geo图.html")
from pyecharts import options as opts from pyecharts.charts import Geo from pyecharts.datasets import register_url register_url("https://echarts-maps.github.io/echarts-countries-js/") g = Geo().add_schema(maptype="瑞士").set_global_opts(title_opts=opts.TitleOpts( title="瑞士")) g.render()
] for i in range(0, len(RDC_city)): data_rdc = data_flow[data_flow['RDC_NAME'] == RDC_city[i]] flow = [] for j in range(0, len(data_rdc)): flow.append((data_rdc.iloc[j, 0], data_rdc.iloc[j, 1])) c.add( series_name=rdc_name[i], data_pair=flow, type_=GeoType.LINES, linestyle_opts=opts.LineStyleOpts(width=0.8, color=colors[i]), label_opts=opts.LabelOpts(is_show=False), ##trail_length=0, is_polyline=True) c.set_global_opts(title_opts=opts.TitleOpts(title="十仓仓网覆盖")) c.render("py十仓仓网覆盖.html") ##漏斗图-pyecharts==1.7.1 from pyecharts import options as opts from pyecharts.charts import Funnel import pandas as pd data_zhl = pd.read_excel(u"D:/code/Python/file/转化率作图.xlsx") attr = data_zhl.环节 values = data_zhl.总体转化率 c = Funnel(init_opts=opts.InitOpts(width='1500px', height='700px')) c.add('example', is_selected=False, data_pair=[list(z) for z in zip(attr, values)], label_opts=opts.LabelOpts(is_show=True,
colors = [ "#f948f7", "#d1c667", "#c76813", "#2c12ef", "#231439", "#65f2d6", "#bdef0a", "#a21c68", "#e38105", "#42d1bd", "#CB8D73", "#EC7C25", "#AF8A54", "#992572", "#0E4243", "#673831" ] ##CDC与RDC的连线 # 循环添加每一个覆盖 for i in range(len(category_list)): sku_gys = gys_rdc.loc[gys_rdc[category_list[i]] > 0] flow = [] for j in range(0, len(sku_gys)): CDC_Name = GIS[list(sku_gys['CDC_Name'])[j]]['city_name_cn'] RDC_Name = GIS[list( sku_gys['RDC_Name'])[j]]['city_name_cn'].split('市')[0] + '仓' flow.append((CDC_Name, RDC_Name)) sku_name = sku[category_list[i]]['name'] c.add( series_name=sku_name, data_pair=flow, type_=GeoType.LINES, linestyle_opts=opts.LineStyleOpts(width=0.8, color=colors[i]), label_opts=opts.LabelOpts(is_show=False), ##trail_length=0, is_polyline=True, effect_opts=opts.EffectOpts(symbol='pin', symbol_size=10), is_selected=False) c.set_global_opts(title_opts=opts.TitleOpts(title="供应商覆盖", pos_top='50%')) c.render("供应商覆盖关系_东莞_天津.html")
file.close() geo = Geo(opts.InitOpts(width="950px", height="650px", page_title="全国疫情分析")).add_schema(maptype="china") for index in range(len(data)): item = data[index] try: geo.add("全部数据", [item], is_selected=True) if item[1] == 0: geo.add("0", [item], is_selected=False) elif item[1] <= 100: geo.add("(0, 100]", [item], is_selected=False) elif item[1] <= 500: geo.add("(100, 500]", [item], is_selected=False) elif item[1] <= 1000: geo.add("(500, 1000]", [item], is_selected=False) else: geo.add("> 1000", [item], is_selected=False) if index >= len(data) - 20: geo.add("前20", [item], is_selected=False) except: pass 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.render(path='疫情地图.html')
"林芝市", "临夏州", "甘南州", "海北州", "黄南州", "海南州", "果洛州", "玉树州", "海西州", "昌吉州", "博州", "克州", "伊犁哈萨克州"] data = [] for index, row in df_aqi.iterrows(): city = row['city'] aqi = row['aqi'] if city in echart_unsupported_city: continue data.append( (city, aqi) ) geo = Geo("全国主要城市空气质量(AQI) - 2018-05-27", "数据来源于环保部网站", title_color="#fff", title_pos="center", width=1000, height=600, background_color='#404a59') attr, value = geo.cast(data) geo.add("", attr, value, visual_range=[0, 200], maptype='china',visual_text_color="#fff", symbol_size=10, is_visualmap=True, label_formatter='{b}', # 指定 label 只显示城市名 tooltip_formatter='{c}', # 格式:经度、纬度、值 label_emphasis_textsize=15, # 指定标签选中高亮时字体大小 label_emphasis_pos='right' # 指定标签选中高亮时字体位置 ) geo.render("aqi.html") geo
avg_salary_by_loc.plot.bar() for i, v in enumerate(avg_salary_by_loc): plt.text(i, v, round(v, 2), ha='center', va='bottom') plt.title('不同区域平均工资柱状图', fontproperties=font_zh) plt.xticks(range(len(avg_salary_by_loc)), avg_salary_by_loc.index, fontproperties=font_zh) plt.xlabel('区域', fontproperties=font_zh) plt.ylabel('平均工资(千/年)', fontproperties=font_zh) loc_list = [[i, loc_counts[i]] for i in loc_counts.index] geo = Geo().add_schema(maptype='成都') geo.add('区域分布热度图', loc_list, type_=ChartType.HEATMAP) # 设置名称和数据 geo.set_series_opts(label_opts=opts.LabelOpts(is_show=True)) # 设置标签是否可见 geo.set_global_opts(visualmap_opts=opts.VisualMapOpts()) # 视觉映射配置 geo.render('./loc_heatmap.html') # 保存为网页 os.system('"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"\ ./loc_heatmap.html') # 打开网页 # 工作经验分析 exp_data = data['job_exp'] exp_des = exp_data.describe() # 工作经验基本数据描述,包括平均数、中位数等 exp_counts = exp_data.value_counts().sort_index() # 按实际值进行频率统计 fig = plt.figure('平均工作经验统计详情', figsize=[16, 5]) plt.subplots_adjust(left=0.03, bottom=0.15, right=0.97, top=0.9, wspace=0.25) ax1 = fig.add_subplot(161) plt.title('平均工作经验年限详情描述', fontproperties=font_zh) for i, v in enumerate(exp_des): plt.text(0.05, 1 - (i + 1) * 0.07,
title_opts=opts.TitleOpts(title="Geo-流向图")) #添加主题,中国地图,填充及边界颜色设置 geo.add_schema( maptype="china", itemstyle_opts=opts.ItemStyleOpts( border_color="#111", color="#454545"), ) #添加系列 geo.add( "", [("成都",10),("合肥",20),("宁波",30),("武汉",40),("西安",50),("郑州",60),("大连",70),("济南",80)], type_=ChartType.EFFECT_SCATTER, #散点图的一种形式 label_opts=opts.LabelOpts(is_show = True), #不显示数值则设置为False # color="red" ) geo.add( "", [("北京", 100), ("上海", 100)], type_=ChartType.HEATMAP, #散点的另一种形式 label_opts=opts.LabelOpts(is_show=False) ) #设置流向 geo.add( "流向图", [("上海","成都"),("上海","合肥"),("上海","宁波"),("上海","武汉"),("上海","西安"),("北京","郑州"),("北京","大连"),("北京","济南")], type_=ChartType.LINES, linestyle_opts=opts.LineStyleOpts(curve=0.3,color="#63B8FF"), #基本线条的弯曲程度及颜色,英文及RGB都行 effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color="#FF7F00") # 流向线条的形式、颜色 ) #生成图片 geo.render('geo1.html')
"label": "G", "color": "purple" } ], ), legend_opts=opts.LegendOpts( # 设置图例配置项 pos_right="right", pos_top="top", orient="vertical", ), ) geo.set_series_opts(label_opts=opts.LabelOpts( # 设置标签配置项 is_show=False # 设置不显示Label )) geo.render("demo03.html") # 生成名为"demo03"的本地html文件 # customMap = ( # Map() # .add("商家A", # 图例 # [list(z) for z in zip(Faker.provinces, Faker.values())], # 数据项 # "china" # 地图 # ) # .set_global_opts( # 设置全局项 # title_opts=opts.TitleOpts( # 设置标题项 # title="中国地图" # 设置标题名称 # ) # ) # ) # customMap.render("demo11.html") # 生成名为demo11的本地html文件