(소스 코드) Python을 사용하여 전염병에 대한 실시간 데이터 맵 만들기 (PS : 전국 및 각도)

[특별 성명 : 큰 소를 알기 위해 복각, 약간만 수정, 권리 침해 경우 삭제하려면 연락하십시오]

전염병의 일일 데이터 변화는 수천 명의 사람들의 마음에 영향을 미치고 있습니다. 나는 아침에 일어나면 전염병이 극복되었다는 좋은 소식이 빨리 오기를 바랍니다. 아침마다 가장 먼저 일어나는 것은 확진 자 수의 변화를 보는 것인데, 많은 친구들이 나와 같다고 생각합니다. 저는 프로그래머이고 집에서 파이썬을 통해 실시간으로 데이터 분포 맵을 생성하는 작은 프로그램을 만들었습니다.이 프로그램은 전국이나 각 지방에있을 수 있습니다. 기술 공유, 우리는 함께 전염병을 물리칩니다.

(웹 사이트에서 가져온 데이터는 주로 기술 공유를 위해 매우 정확하지는 않지만 이해하기를 바랍니다.)

국가 데이터지도
여기에 사진 설명 삽입

후베이 성
여기에 사진 설명 삽입

모두와 함께 코드를 보자!

여기 pyecharts의 도움으로

1. 먼저 필요한 모듈을 가져옵니다.


```python
#如果没有这些模块记得先导入
import requests
import json
import re
from pyecharts.charts import Map
from pyecharts import options

명령 줄에서 이러한 모듈 가져 오기

가져 오기 모듈

pip 설치 요청

pip install json

pip 설치 다시

pip 설치 pyecharts

위의 모듈 외에도지도를 가져와야합니다.

세계지도, 중국 지방지도, 중국 도시지도, 중국 지구 및 카운티지도, 중국 지역지도가 이어집니다.

필요에 따라지도 가져 오기

pip 설치 echarts-countries-pypkg

pip 설치 echarts-china-provinces-pypkg

pip 설치 echarts-china-cities-pypkg

pip 설치 echarts-china-counties-pypkg

pip 설치 echarts-china-misc-pypkg

주의 사항 : 다운로드가 시간외 인 경우 국내 미러를 이용하여 다운로드 받으시기 바랍니다.

2. 데이터 프로세스 데이터를 얻습니다.

#发起网络请求,获取数据
result = requests.get('https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')
#使用正则表达式处理数据
json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
html = f"{json_str}"
table = json.loads(f"{html}")

3.지도 생성을 수행합니다. 자세한 설명은 뒷면에 있습니다.

province_data = []

#循环获取省份名称和对应的确诊数据
for province in table['data']['list']:
    #将省份数据添加到列表中去
    province_data.append((province['name'], province['value']))

    city_data = []
    #循环获取城市名称和对应的确诊数据
    for city in province['city']:
        #这里要注意对应上地图的名字需要使用mapName这个字段
        city_data.append((city['mapName'], city['conNum']))
    #使用Map,创建省份地图    
    map_province = Map()
    #设置地图上的标题和数据标记,添加省份和确诊人数
    map_province.set_global_opts(title_opts=options.TitleOpts(title=province['name'] + "实时疫情图-确诊人数:" + province['value']),
                                 visualmap_opts=options.VisualMapOpts(is_piecewise=True,#设置是否为分段显示
                #自定义数据范围和对应的颜色
                pieces=[
                    {
    
    "min": 1000, "label": '>1000人', "color": "#6F171F"}, 
                    {
    
    "min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},
                    {
    
    "min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},
                    {
    
    "min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},
                    {
    
    "min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}]))
    #将数据添加进去,生成省份地图,所以maptype要对应省份。
    map_province.add("确诊", city_data, maptype = province['name'])
    #一切完成,那么生成一个省份的html网页文件,取上对应省份的名字。
    map_province.render(province['name'] + "疫情地图.html")  

#创建国家地图     
map_country = Map()
#设置地图上的标题和数据标记,添加确诊人数
map_country.set_global_opts(title_opts=options.TitleOpts(title="中国实时疫情图-确诊人数:" + table['data']["gntotal"]), 
                            visualmap_opts=options.VisualMapOpts(is_piecewise=True,#设置是否为分段显示
                #自定义数据范围和对应的颜色
                pieces=[
                    {
    
    "min": 1000, "label": '>1000人', "color": "#6F171F"}, # 不指定 max,表示 max 为无限大(Infinity)。
                    {
    
    "min": 500, "max": 1000, "label": '500-1000人', "color": "#C92C34"},
                    {
    
    "min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},
                    {
    
    "min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},
                    {
    
    "min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"}]))
#将数据添加进去,生成中国地图,所以maptype要对应china。
map_country.add("确诊", province_data, maptype="china")
#一切完成,那么生成一个html网页文件。
map_country.render("中国疫情地图.html")
"""
#world地图,没有详细去完善了,有兴趣的可以试试。

data=[]

for country in table['data']['worldlist']:

    data.append((country['name'], country['value']))
print(data)

map_country =  Map()
map_country.set_global_opts(title_opts=options.TitleOpts(title="世界实时疫情图"), visualmap_opts=options.VisualMapOpts(max_=1000))
map_country.add("确诊", data, maptype="world")
map_country.render("world.html")  # 生成html文件

"""
print("生成完成!!!")

코드 설명의 일부 :

(1)

# 목록에 지방 데이터 추가

province_data.append ((province [ 'name'], province [ 'value']))

데이터에서 해당 값을 꺼내 province_data에 추가합니다.

(2)

title_opts = options.TitleOpts (title =“A”)

A는 생성 된 맵의 빨간색 프레임 부분입니다.
여기에 사진 설명 삽입
(삼)

visualmap_opts = options.VisualMapOpts (is_piecewise = True, # 세그먼트에 표시할지 여부 설정

# 데이터 범위와 해당 색상을 사용자 정의합니다. 여기서는 색상 선택기로 얻은 색상 값입니다. 쉽지 않습니다.

조각 = [

{ "min": 1000, "label": '> 1000 人', "color": "# 6F171F"},

{ "min": 500, "max": 1000, "label": '500-1000 人', "color": "# C92C34"},

{ "min": 100, "max": 499, "label": '100-499 人', "color": "# E35B52"},

{ "min": 10, "max": 99, "label": '10 -99 人 ', "color": "# F39E86"},

{ "min": 1, "max": 9, "label": '1-9 人', "color": "# FDEBD0"}]))

is_piecewise = True, # 세그먼트 표시 여부 설정

그런 다음 조각을 통해 설정하십시오.
여기에 사진 설명 삽입
(4)

# 중국지도를 생성하려면 데이터를 추가해야하므로지도 유형은 중국과 일치해야합니다.

map_country.add (“确诊”, province_data, maptype =“china”)

설명 정보와 해당 데이터를지도에 추가하는 동시에지도 유형을 설정합니다.
여기에 사진 설명 삽입
(5)

# 모든 것이 완료되면 html 웹 페이지 파일을 생성하십시오.

map_country.render ( "country.html")

(6) 이렇게 세계, 국가, 지방의 실시간지도 페이지가 생성됩니다.
여기에 사진 설명 삽입

추천

출처blog.csdn.net/weixin_45606831/article/details/105129216