使用python繪制地圖的示例代碼
如何繪制地圖
前面我們繪制折線圖需要用到 pyecharts.charts模塊下的 Line方法,那么要繪制地圖我們需要用到 pyecahrts.charts模塊下的 Map方法。基本思想跟繪制折線圖是相似的,不同的就是繪制折線圖使用的數(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()

當(dāng)然這種地圖看的很單調(diào),我們同樣可以添加一些配置項來更生動的展現(xiàn)數(shù)據(jù)。
添加配置項
map.set_global_opts(
title_opts=TitleOpts(title="這是一個測試地圖",pos_left="center",pos_bottom="1%"), # 標(biāo)題
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)文章
Python+Selenium實現(xiàn)自動化的環(huán)境搭建的步驟(圖文)
這篇文章主要介紹了Python+Selenium實現(xiàn)自動化的環(huán)境搭建的步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
詳述numpy中的np.random.random()系列函數(shù)用法
本文主要介紹了詳述numpy中的np.random.random()系列函數(shù)用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

