Pyecharts在地图上面批量添加不同类别的点[Python]

1.效果如图

 

2.使用的数据是来自数据,自行下载(使用时确保自己的安装目录)

3.图中的点代表某个城市,比如东莞市、南京市等。源码:

import json
import random
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ThemeType

# 官方网站https://pyecharts.org/#/zh-cn/geography_charts

# 随机产生颜色值
def randomcolor():
    colorArr = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    color = ""
    for i in range(6):
        color += colorArr[random.randint(0,14)]
    return "#"+color

# 加载中国省份数据
data_china_path = "../datas/china_region.json"
data_file = open(data_china_path, 'rb')
data = json.load(data_file)

# 所有的省份
provinces = data.get("districts")
provinces_num = len(provinces)

# 根据省份的数量生成颜色,不重复出现
colors = set()
while len(colors) < provinces_num:
    # (因为要生成的数据较少,所以使用这种方式,当数据量大的时候,这种方式就很费劲。(最好就是获取所有的颜色,然后从中不放回的挑))
    color = randomcolor()
    colors.add(color)
colors = list(colors)

# 初始化
map = (
    Geo(
        init_opts=opts.InitOpts(width="1000px",
                                height="800px",
                                renderer="svg",
                                theme=ThemeType.LIGHT,
                                animation_opts=opts.AnimationOpts(animation=True))
    )
    # 选取地图
    .add_schema(maptype="china",
                layout_size=100)
)

data_pair_flag = 0
for province_index in range(provinces_num):

    province = provinces[province_index]
    province_name = province.get("name")

    cities = province.get("districts")
    cities_num = len(cities)
    for city in cities:
        city_name = city.get("name")
        lon = city.get("center").get("longitude")
        lat = city.get("center").get("latitude")
        # 添加自定义点和属性
        map.add_coordinate(city_name, lon, lat)
        map.add(series_name=province_name,
                data_pair=[(city_name, data_pair_flag*10)],
                color=colors[province_index],
                symbol_size=8,
                )
    data_pair_flag += 1

# 设置全局变量
map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
# 标题
# map.set_global_opts(title_opts=opts.TitleOpts(title="China"))

map.render('../results_maps/m03_pycharts.html')


齐活。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值