示例#1
0
    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} 地图生成失败!可能原因:工号或提交人姓名中包含文件名不可用的特殊字符,如:*。请修改后重试!')
示例#2
0
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
示例#3
0
    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')
示例#5
0
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
示例#6
0
文件: hello.py 项目: zhengjk1992/Kun
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")
示例#7
0
文件: echarts.py 项目: yaoqi/wxFriend
    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 base_info():
    """地图参数配置"""
    geo = Geo(is_ignore_nonexistent_coord=False)
    geo.width = "1440px"
    geo.height = "680px"
    geo.add_schema(maptype="china") \
        .add(series_name="新增确诊人数", data_pair=confirmed) \
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False, background_color='#61a0a8')) \
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(),
                         title_opts=opts.TitleOpts(title="中国新冠疫情动态\n数据更新时间:\n" + time))
    return geo
示例#9
0
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')
示例#10
0
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
示例#11
0
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")
示例#12
0
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.')
示例#13
0
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 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
示例#15
0
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 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
示例#17
0
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')
示例#18
0
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
示例#19
0
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")
示例#20
0
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('渲染完毕')
示例#21
0
 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)
示例#22
0
文件: plot.py 项目: AnonymKing/snmp
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")
示例#23
0
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')
示例#24
0
    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")
示例#25
0
 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
示例#26
0
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")
示例#27
0
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
示例#28
0
from pyecharts import options as opts
from pyecharts.charts import Geo, Page
from pyecharts.globals import ChartType, SymbolType

#定义地理图
geo = Geo()
#设置画布宽度
geo.width = "800px"
#设置画布高度
geo.height = "600px"
#全局设置项
geo.set_global_opts(visualmap_opts = opts.VisualMapOpts(max_=100),
                    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)
        )
示例#29
0
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType

c = Geo()
c.add_schema(
    maptype="china",
    itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="gray"),
    is_roam=True,
    zoom=1,
)
c.add("港口", [
    ("天津", 27),
    ("唐山", 10),
    ("沧州", 6),
    ("日照", 5),
    ("大连", 5),
    ("秦皇岛", 4),
    ("连云港", 4),
    ("青岛", 3),
    ("镇江", 3),
    ("福州", 3),
    ("潍坊", 2),
    ("广州", 2),
    ("厦门", 2),
    ("北海", 1),
    ("黄埔", 1),
    ("秦皇岛", 1),
    ("南通", 1),
    ("杭州", 1),
    ("上海", 1),
示例#30
0
            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")