使用python繪制地圖的示例代碼
如何繪制地圖
前面我們繪制折線圖需要用到 pyecharts.charts
模塊下的 Line
方法,那么要繪制地圖我們需要用到 pyecahrts.charts
模塊下的 Map
方法?;舅枷敫L制折線圖是相似的,不同的就是繪制折線圖使用的數(shù)據(jù)是列表,列表中的每個元素是 字典
,而繪制地圖的數(shù)據(jù)也是列表,但每個元素是 元組
。
導(dǎo)入模塊
from pyecharts.charts import Map
創(chuàng)建空地圖
map = Map()
提供測試用例
data = [ ("北京市",499), ("上海市",399), ("廣東省",299), ("湖北省",199), ("湖南省",99) ]
這里需要注意,我們的數(shù)據(jù)要和地圖上的數(shù)據(jù)保持一致,例如:地圖上是北京市,如果我們用北京,就會出問題。
將數(shù)據(jù)添加進地圖中
map.add("測試地圖",data,"china")
第一個參數(shù)是繪制的地圖的名稱。第二個參數(shù)是添加的數(shù)據(jù),第三個參數(shù)是什么類型的地圖,默認是中國地圖。
生成帶有數(shù)據(jù)的地圖
map.render()
當然這種地圖看的很單調(diào),我們同樣可以添加一些配置項來更生動的展現(xiàn)數(shù)據(jù)。
添加配置項
map.set_global_opts( title_opts=TitleOpts(title="這是一個測試地圖",pos_left="center",pos_bottom="1%"), # 標題 visualmap_opts=VisualMapOpts( is_show=True, # 是否顯示視覺映射 is_piecewise=True, # 是否允許自定義顏色 pieces=[ {"min": 1,"max": 99,"label": "1-99","color": "#125616"}, {"min": 100,"max": 199,"label": "100-199","color": "#121d56"}, {"min": 200,"max": 299,"label": "200-299","color": "#56124d"}, {"min": 300,"max": 399,"label": "300-399","color": "#565212"}, {"min": 400,"max": 499,"label": "400-499","color": "#e53436"}, ]) # 這里如果我們不知道相對應(yīng)的顏色的代碼的話,我們可以去自行去搜索 )
這里需要注意:我們的數(shù)據(jù)的范圍應(yīng)該與顏色的范圍對應(yīng),數(shù)據(jù)的范圍應(yīng)該在設(shè)置的顏色的范圍內(nèi)。例如如果你的數(shù)據(jù)中沒有大于500的數(shù)據(jù),那么你設(shè)置的顏色的范圍也不應(yīng)該包含大于500的范圍段。
根據(jù)已有數(shù)據(jù)繪制地圖
這里我們的提供的數(shù)據(jù)是關(guān)于中國各省疫情確診人數(shù)的。如果大家也想練手的話,歡迎私信我拿數(shù)據(jù)。
我們先看看數(shù)據(jù)的層次。
我們先獲取到所有省份的確診人數(shù)。
import json # 打開數(shù)據(jù)所在文件 f = open("D:/桌面/疫情.txt","r",encoding="UTF8") # 讀取數(shù)據(jù) data = f.read() f.close() # 將JSON數(shù)據(jù)轉(zhuǎn)換為python數(shù)據(jù) data_dict = json.loads(data) province_data_list = data_dict["areaTree"][0]["children"]
將獲取到的數(shù)據(jù)裝進元組中。
data_list = [] # 將數(shù)據(jù)放入元組中 for i in province_data_list: province_name = i["name"] province_data = i["total"]["confirm"] data_list.append((province_name,province_data))
繪制地圖
map = Map() map.add("各省份確診人數(shù)", data_list, "china") map.set_global_opts( title_opts=TitleOpts(title="全國疫情圖",pos_left="center",pos_bottom="1%"), visualmap_opts=VisualMapOpts( is_show=True, is_piecewise=True, pieces=[ {"min": 1, "max": 99, "label": "1-99人", "color": "#cfe4c4"}, {"min": 100, "max": 999, "label": "100-999人", "color": "#c4d2e4"}, {"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#e3c4e4"}, {"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#e4c4d5"}, {"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#e4cac4"}, ]) ) map.render("全國疫情圖.html") # 我們可以為形成的html文件命名
整體代碼展示
import json from pyecharts.charts import Map from pyecharts.options import TitleOpts,VisualMapOpts map = Map() # 打開數(shù)據(jù)所在文件 f = open("D:/桌面/疫情.txt","r",encoding="UTF8") # 讀取數(shù)據(jù) data = f.read() f.close() # 將JSON數(shù)據(jù)轉(zhuǎn)換為python數(shù)據(jù) data_dict = json.loads(data) province_data_list = data_dict["areaTree"][0]["children"] data_list = [] # 將數(shù)據(jù)放入元組中 for i in province_data_list: province_name = i["name"] province_data = i["total"]["confirm"] data_list.append((province_name,province_data)) map = Map() map.add("各省份確診人數(shù)", data_list, "china") map.set_global_opts( title_opts=TitleOpts(title="全國疫情圖",pos_left="center",pos_bottom="1%"), visualmap_opts=VisualMapOpts( is_show=True, is_piecewise=True, pieces=[ {"min": 1, "max": 99, "label": "1-99人", "color": "#cfe4c4"}, {"min": 100, "max": 999, "label": "100-999人", "color": "#c4d2e4"}, {"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#e3c4e4"}, {"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#e4c4d5"}, {"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#e4cac4"}, # {"min": 1000000, "max": "10萬+", "label": "1000000-10萬+", "color": "#e4cac4"} ]) ) map.render("全國疫情圖.html")
以上就是詳解如何使用python繪制地圖的詳細內(nèi)容,更多關(guān)于python繪制地圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Django OneToOneField和ForeignKey的區(qū)別詳解
這篇文章主要介紹了基于Django OneToOneField和ForeignKey的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03使用python-cv2實現(xiàn)Harr+Adaboost人臉識別的示例
這篇文章主要介紹了使用python-cv2實現(xiàn)Harr+Adaboost人臉識別的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Python基礎(chǔ)教程之正則表達式基本語法以及re模塊
正則表達式是可以匹配文本片段的模式,今天的Python就跟大家一起討論一下python中的re模塊,python re模塊感興趣的朋友一起學(xué)習(xí)吧2016-03-03python列表倒序的幾種方法(切片、reverse()、reversed())
本文主要介紹了python列表倒序的幾種方法(切片、reverse()、reversed()),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Python日期和時間戳的轉(zhuǎn)換的實現(xiàn)方式
Python中日期和時間的處理涉及到time和datetime模塊,time模塊可實現(xiàn)時間戳與格式化時間字符串的轉(zhuǎn)換,而datetime模塊則提供更加直接易用的接口,本文詳細給大家介紹了Python日期和時間戳的轉(zhuǎn)換的實現(xiàn)方式,需要的朋友可以參考下2024-10-10