python如何繪製疫情圖
python中進行圖表繪製的庫主要有兩個:matplotlib 和 pyecharts, 相比較而言:
matplotlib中提供了BaseMap可以用於地圖的繪製,但是個人覺得其繪製的地圖不太美觀,而且安裝相較而言有點麻煩。
pyecharts是基於百度開源的js庫echarts而來,其最大的特點是:安裝簡單、使用也簡單。
所以決定使用pyecharts來繪製地圖。
1.安裝pyecharts
如果有anaconda環境,可用 pip install pyecharts 命令安裝pyecharts。
由於我們要繪製中國的疫情地圖,所以還要額外下載幾個地圖。地圖檔案被分成了三個Python包,分別為:
全球國家地圖: echarts-countries-pypkg
安裝命令:pip install echarts-countries-pypkg
中國省級地圖: echarts-china-provinces-pypkg
安裝命令:pip install echarts-china-provinces-pypkg
中國市級地圖: echarts-china-cities-pypkg
安裝命令:pip install echarts-china-cities-pypkg
2.導包。
繪製地圖時我們根據自己需要匯入需要的包,在pyecharts的官方文件 https://pyecharts.org/#/ 中詳細列出了繪製各種圖表的的方法及引數含義,而且提供了各種圖示的demo,方便我們更好地使用pyecharts。
from pyecharts.charts import Map from pyecharts import options as opts
3.程式碼
# 用於儲存城市名稱和確診人數 map_data = [] for i in china : print(i) # 獲得省份名稱 province = i["name"] print("province:",province) province_confirm = i["total"]["confirm"] # 儲存省份名稱和該省確診人數 map_data.append((i["name"],province_confirm)) c = ( # 宣告一個map物件 Map() # 新增資料 .add("確診",map_data,"china") # 設定標題和顏色 .set_global_opts(title_opts=opts.TitleOpts(title="全國疫情圖"),visualmap_opts=opts.VisualMapOpts(split_number=6,is_piecewise=True,pieces=[{"min":1,"max":9,"label":"1-9人","color":"#ffefd7"},{"min":10,"max":99,"label":"10-99人","color":"#ffd2a0"},{"min":100,"max":499,"label":"100-499人","color":"#fe8664"},{"min":500,"max":999,"label":"500-999人","color":"#e64b47"},{"min":1000,"max":9999,"label":"1000-9999人","color":"#c91014"},{"min":10000,"label":"10000人及以上","color":"#9c0a0d"} ])) ) # 生成html檔案 c.render("全國實時疫情.html")
執行成功後就可以在工程目錄下發現一個名為“全國實時疫情”的html檔案,開啟就可以看到我們繪製的疫情圖啦!!
全部程式碼(包含儲存到資料庫,爬取資料、繪製疫情圖):
#!/usr/bin/env python # -*- coding: utf-8 -*- import json import requests import pymysql # 裝了anaconda的可以pip install pyecharts安裝pyecharts from pyecharts.charts import Map,Geo from pyecharts import options as opts from pyecharts.globals import GeoType,RenderType # 繪圖包參加網址https://pyecharts.org/#/zh-cn/geography_charts id = 432 coon = pymysql.connect(user='root',password='root',host='127.0.0.1',port=3306,database='yiqing',use_unicode=True,charset="utf8") cursor = coon.cursor() url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5" resp=requests.get(url) html=resp.json() data=json.loads(html["data"]) time = data["lastUpdateTime"] data_info = time.split(' ')[0] detail_time = time.split(' ')[1] # 獲取json資料的全國省份疫情情況資料 china=data["areaTree"][0]["children"] # 用於儲存城市名稱和確診人數 map_data = [] for i in china : print(i) # 獲得省份名稱 province = i["name"] print("province:",province_confirm)) # 各省份下有各市,獲取各市的疫情資料 for child in i["children"]: print(child) # 獲取城市名稱 city = child["name"] print("city:",city) # 獲取確診人數 confirm = int(child["total"]["confirm"]) # 獲取疑似人數 suspect = int(child["total"]["suspect"]) # 獲取死亡人數 dead = int(child["total"]["dead"]) # 獲取治癒人數 heal = int(child["total"]["heal"]) # 插入資料庫中 cursor.execute("INSERT INTO city(id,city,confirm,suspect,dead,heal,province,date_info,detail_time) VALUES (%s,%s,%s)",(id,data_info,detail_time)) id = id + 1 coon.commit() c = ( # 宣告一個map物件 Map() # 新增資料 .add("確診","color":"#9c0a0d"} ])) ) # 生成html檔案 c.render("全國實時疫情.html") # # china_total="確診" + str(data["chinaTotal"]["confirm"])+ "疑似" + str(data["chinaTotal"]["suspect"])+ "死亡" + str(data["chinaTotal"]["dead"]) + "治癒" + str(data["chinaTotal"]["heal"]) + "更新日期" + data["lastUpdateTime"] # print(china_total)
以上就是python如何繪製疫情圖的詳細內容,更多關於python繪製疫情圖的資料請關注我們其它相關文章!