一 基礎(chǔ)地圖使用
- 使用 Pyecharts 構(gòu)建地圖可視化也是很簡單的。Pyecharts 支持多種地圖類型,包括普通地圖、熱力圖、散點地圖等。以下是一個構(gòu)建簡單地圖的示例,以中國地圖為例:
-
首先,確保已安裝了Pyecharts 庫。可以使用以下命令來安裝:
pip install pyecharts
-
然后,創(chuàng)建一個 Python 腳本,例如
map_example.py
,并輸入以下代碼:
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
# 準備地圖對象
map = Map()
# 準備數(shù)據(jù)
data = [
("北京市", 99),
("上海市", 199),
("湖南省", 299),
("臺灣省", 399),
("廣東省", 499)
]
# 添加數(shù)據(jù)
map.add("銷售額", data, "china")
# 設(shè)置全局選項
map.set_global_opts(
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True,
pieces=[
{"min": 1, "max": 9, "label": "1-9", "color": "#CCFFFF"},
{"min": 10, "max": 99, "label": "10-99", "color": "#FF6666"},
{"min": 100, "max": 500, "label": "100-500", "color": "#990033"}
]
)
)
# 繪圖
map.render("銷售額.html")
-
使用Pyecharts 的
Map
類來創(chuàng)建地圖可視化。通過add
方法,添加銷售額數(shù)據(jù),并指定了地圖類型為 “china”。然后,通過set_global_opts
方法設(shè)置了圖表的標題和視覺映射選項,以控制顏色映射。 -
運行腳本后,將會生成一個名為
銷售額.html
的 HTML 文件,其中包含了一個簡單的中國地圖。文章來源:http://www.zghlxwxcb.cn/news/detail-640347.html
二 國內(nèi)疫情可視化圖表
2.1 實現(xiàn)步驟
- 查看數(shù)據(jù)文件分析json結(jié)構(gòu),可使用在線json工具進行分析
- 根據(jù)json文件結(jié)構(gòu)獲取省份(name)和確診人數(shù)(confirm)數(shù)據(jù),并組成列表
import json
# 讀取數(shù)據(jù)文件
f = open("D:/疫情.txt", "r", encoding="UTF-8")
data = f.read() # 全部數(shù)據(jù)
# 關(guān)閉文件
f.close()
# 取到各省數(shù)據(jù)
# 將字符串json轉(zhuǎn)換為python的字典
data_dict = json.loads(data) # 基礎(chǔ)數(shù)據(jù)字典
# 從字典中取出省份的數(shù)據(jù)
province_data_list = data_dict["areaTree"][0]["children"]
# 組裝每個省份和確診人數(shù)為元組,并各個省的數(shù)據(jù)都封裝入列表內(nèi)
data_list = [] # 繪圖需要用的數(shù)據(jù)列表
for province_data in province_data_list:
province_name = province_data["name"] # 省份名稱
province_confirm = province_data["total"]["confirm"] # 確診人數(shù)
data_list.append((province_name, province_confirm))
- 省份的縮寫映射到全稱處理
# 字典映射省份縮寫到全稱
province_mapping = {
'臺灣': '臺灣省',
'江蘇': '江蘇省',
'云南': '云南省',
'河南': '河南省',
'上海': '上海市',
'湖南': '湖南省',
'湖北': '湖北省',
'廣東': '廣東省',
'香港': '香港特別行政區(qū)',
'福建': '福建省',
'浙江': '浙江省',
'山東': '山東省',
'四川': '四川省',
'天津': '天津市',
'北京': '北京市',
'陜西': '陜西省',
'廣西': '廣西壯族自治區(qū)',
'遼寧': '遼寧省',
'重慶': '重慶市',
'澳門': '澳門特別行政區(qū)',
'甘肅': '甘肅省',
'山西': '山西省',
'海南': '海南省',
'內(nèi)蒙古': '內(nèi)蒙古自治區(qū)',
'吉林': '吉林省',
'黑龍江': '黑龍江省',
'寧夏': '寧夏回族自治區(qū)',
'青海': '青海省',
'江西': '江西省',
'貴州': '貴州省',
'西藏': '西藏自治區(qū)',
'安徽': '安徽省',
'河北': '河北省',
'新疆': '新疆維吾爾自治區(qū)',
}
# 處理地區(qū)名,替換為全稱
processed_data=[(province_mapping.get(area, area), value) for area, value in data_list]
print(processed_data)
[('臺灣省', 15880), ('江蘇省', 1576), ('云南省', 982), ('河南省', 1518), ('上海市', 2408), ('湖南省', 1181), ('湖北省', 68286),
('廣東省', 2978), ('香港特別行政區(qū)', 12039), ('福建省', 773), ('浙江省', 1417), ('山東省', 923), ('四川省', 1179), ('天津市', 445),
('北京市', 1107), ('陜西省', 668), ('廣西壯族自治區(qū)', 289), ('遼寧省', 441), ('重慶市', 603), ('澳門特別行政區(qū)', 63), ('甘肅省', 199),
('山西省', 255), ('海南省', 190), ('內(nèi)蒙古自治區(qū)', 410), ('吉林省', 574), ('黑龍江省', 1613), ('寧夏回族自治區(qū)', 77),
('青海省', 18), ('江西省', 937), ('貴州省', 147), ('西藏自治區(qū)', 1), ('安徽省', 1008), ('河北省', 1317), ('新疆維吾爾自治區(qū)', 980)]
- 創(chuàng)建地圖,設(shè)置顏色分段映射
from pyecharts.charts import Map
from pyecharts.options import *
# 創(chuàng)建地圖對象
map = Map()
# 添加數(shù)據(jù)
map.add("各省份確診人數(shù)", processed_data, "china")
# 設(shè)置全局配置,定制分段的視覺映射
map.set_global_opts(
title_opts=TitleOpts(title="全國疫情地圖"),
visualmap_opts=VisualMapOpts(
is_show=True, # 是否顯示
is_piecewise=True, # 是否分段
pieces=[
{"min": 1, "max": 99, "label": "1~99人", "color": "#CCFFFF"},
{"min": 100, "max": 999, "label": "100~9999人", "color": "#FFFF99"},
{"min": 1000, "max": 4999, "label": "1000~4999人", "color": "#FF9966"},
{"min": 5000, "max": 9999, "label": "5000~99999人", "color": "#FF6666"},
{"min": 10000, "max": 99999, "label": "10000~99999人", "color": "#CC3333"},
{"min": 100000, "label": "100000+", "color": "#990033"},
]
)
)
# 繪圖
map.render("全國疫情地圖.html")
2.2 完整代碼
import json
from pyecharts.charts import Map
from pyecharts.options import *
# 字典映射省份縮寫到全稱
province_mapping = {
'臺灣': '臺灣省',
'江蘇': '江蘇省',
'云南': '云南省',
'河南': '河南省',
'上海': '上海市',
'湖南': '湖南省',
'湖北': '湖北省',
'廣東': '廣東省',
'香港': '香港特別行政區(qū)',
'福建': '福建省',
'浙江': '浙江省',
'山東': '山東省',
'四川': '四川省',
'天津': '天津市',
'北京': '北京市',
'陜西': '陜西省',
'廣西': '廣西壯族自治區(qū)',
'遼寧': '遼寧省',
'重慶': '重慶市',
'澳門': '澳門特別行政區(qū)',
'甘肅': '甘肅省',
'山西': '山西省',
'海南': '海南省',
'內(nèi)蒙古': '內(nèi)蒙古自治區(qū)',
'吉林': '吉林省',
'黑龍江': '黑龍江省',
'寧夏': '寧夏回族自治區(qū)',
'青海': '青海省',
'江西': '江西省',
'貴州': '貴州省',
'西藏': '西藏自治區(qū)',
'安徽': '安徽省',
'河北': '河北省',
'新疆': '新疆維吾爾自治區(qū)',
}
# 讀取數(shù)據(jù)文件
f = open("C:/疫情.txt", "r", encoding="UTF-8")
data = f.read() # 全部數(shù)據(jù)
# 關(guān)閉文件
f.close()
# 取到各省數(shù)據(jù)
# 將字符串json轉(zhuǎn)換為python的字典
data_dict = json.loads(data) # 基礎(chǔ)數(shù)據(jù)字典
# 從字典中取出省份的數(shù)據(jù)
province_data_list = data_dict["areaTree"][0]["children"]
# 組裝每個省份和確診人數(shù)為元組,并各個省的數(shù)據(jù)都封裝入列表內(nèi)
data_list = [] # 繪圖需要用的數(shù)據(jù)列表
for province_data in province_data_list:
province_name = province_data["name"] # 省份名稱
province_confirm = province_data["total"]["confirm"] # 確診人數(shù)
data_list.append((province_name, province_confirm))
# 處理地區(qū)名,替換為全稱
processed_data=[(province_mapping.get(area, area), value) for area, value in data_list]
print(processed_data)
# 創(chuàng)建地圖對象
map = Map()
# 添加數(shù)據(jù)
map.add("各省份確診人數(shù)", processed_data, "china")
# 設(shè)置全局配置,定制分段的視覺映射
map.set_global_opts(
title_opts=TitleOpts(title="全國疫情地圖"),
visualmap_opts=VisualMapOpts(
is_show=True, # 是否顯示
is_piecewise=True, # 是否分段
pieces=[
{"min": 1, "max": 99, "label": "1~99人", "color": "#CCFFFF"},
{"min": 100, "max": 999, "label": "100~9999人", "color": "#FFFF99"},
{"min": 1000, "max": 4999, "label": "1000~4999人", "color": "#FF9966"},
{"min": 5000, "max": 9999, "label": "5000~99999人", "color": "#FF6666"},
{"min": 10000, "max": 99999, "label": "10000~99999人", "color": "#CC3333"},
{"min": 100000, "label": "100000+", "color": "#990033"},
]
)
)
# 繪圖
map.render("全國疫情地圖.html")
2.3 運行結(jié)果
文章來源地址http://www.zghlxwxcb.cn/news/detail-640347.html
到了這里,關(guān)于探索規(guī)律:Python地圖數(shù)據(jù)可視化藝術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!