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')
齐活。