探索規律:Python地圖數據可視化藝術

文章目錄

  • 一 基礎地圖使用
  • 二 國內疫情可視化圖表
    • 2.1 實現步驟
    • 2.2 完整代碼
    • 2.3 運行結果

一 基礎地圖使用

  • 使用 Pyecharts 構建地圖可視化也是很簡單的。Pyecharts 支持多種地圖類型,包括普通地圖、熱力圖、散點地圖等。以下是一個構建簡單地圖的示例,以中國地圖為例:
  1. 首先,確保已安裝了Pyecharts 庫。可以使用以下命令來安裝:

    pip install pyecharts
    
  2. 然后,創建一個 Python 腳本,例如 map_example.py,并輸入以下代碼:

from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts# 準備地圖對象
map = Map()
# 準備數據
data = [("北京市", 99),("上海市", 199),("湖南省", 299),("臺灣省", 399),("廣東省", 499)
]
# 添加數據
map.add("銷售額", data, "china")# 設置全局選項
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 類來創建地圖可視化。通過 add 方法,添加銷售額數據,并指定了地圖類型為 “china”。然后,通過 set_global_opts 方法設置了圖表的標題和視覺映射選項,以控制顏色映射。

  • 運行腳本后,將會生成一個名為 銷售額.html 的 HTML 文件,其中包含了一個簡單的中國地圖。
    在這里插入圖片描述

二 國內疫情可視化圖表

2.1 實現步驟

  1. 查看數據文件分析json結構,可使用在線json工具進行分析
    在這里插入圖片描述
  2. 根據json文件結構獲取省份(name)和確診人數(confirm)數據,并組成列表
import json# 讀取數據文件
f = open("D:/疫情.txt", "r", encoding="UTF-8")
data = f.read()     # 全部數據
# 關閉文件
f.close()
# 取到各省數據
# 將字符串json轉換為python的字典
data_dict = json.loads(data)        # 基礎數據字典
# 從字典中取出省份的數據
province_data_list = data_dict["areaTree"][0]["children"]
# 組裝每個省份和確診人數為元組,并各個省的數據都封裝入列表內
data_list = []      # 繪圖需要用的數據列表
for province_data in province_data_list:province_name = province_data["name"]                   # 省份名稱province_confirm = province_data["total"]["confirm"]    # 確診人數data_list.append((province_name, province_confirm))
  1. 省份的縮寫映射到全稱處理
# 字典映射省份縮寫到全稱
province_mapping = {'臺灣': '臺灣省','江蘇': '江蘇省','云南': '云南省','河南': '河南省','上海': '上海市','湖南': '湖南省','湖北': '湖北省','廣東': '廣東省','香港': '香港特別行政區','福建': '福建省','浙江': '浙江省','山東': '山東省','四川': '四川省','天津': '天津市','北京': '北京市','陜西': '陜西省','廣西': '廣西壯族自治區','遼寧': '遼寧省','重慶': '重慶市','澳門': '澳門特別行政區','甘肅': '甘肅省','山西': '山西省','海南': '海南省','內蒙古': '內蒙古自治區','吉林': '吉林省','黑龍江': '黑龍江省','寧夏': '寧夏回族自治區','青海': '青海省','江西': '江西省','貴州': '貴州省','西藏': '西藏自治區','安徽': '安徽省','河北': '河北省','新疆': '新疆維吾爾自治區',
}# 處理地區名,替換為全稱
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), ('香港特別行政區', 12039), ('福建省', 773), ('浙江省', 1417), ('山東省', 923), ('四川省', 1179), ('天津市', 445),('北京市', 1107), ('陜西省', 668), ('廣西壯族自治區', 289), ('遼寧省', 441), ('重慶市', 603), ('澳門特別行政區', 63), ('甘肅省', 199), ('山西省', 255), ('海南省', 190), ('內蒙古自治區', 410), ('吉林省', 574), ('黑龍江省', 1613), ('寧夏回族自治區', 77),('青海省', 18), ('江西省', 937), ('貴州省', 147), ('西藏自治區', 1), ('安徽省', 1008), ('河北省', 1317), ('新疆維吾爾自治區', 980)]
  1. 創建地圖,設置顏色分段映射
from pyecharts.charts import Map
from pyecharts.options import *# 創建地圖對象
map = Map()
# 添加數據
map.add("各省份確診人數", processed_data, "china")
# 設置全局配置,定制分段的視覺映射
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 = {'臺灣': '臺灣省','江蘇': '江蘇省','云南': '云南省','河南': '河南省','上海': '上海市','湖南': '湖南省','湖北': '湖北省','廣東': '廣東省','香港': '香港特別行政區','福建': '福建省','浙江': '浙江省','山東': '山東省','四川': '四川省','天津': '天津市','北京': '北京市','陜西': '陜西省','廣西': '廣西壯族自治區','遼寧': '遼寧省','重慶': '重慶市','澳門': '澳門特別行政區','甘肅': '甘肅省','山西': '山西省','海南': '海南省','內蒙古': '內蒙古自治區','吉林': '吉林省','黑龍江': '黑龍江省','寧夏': '寧夏回族自治區','青海': '青海省','江西': '江西省','貴州': '貴州省','西藏': '西藏自治區','安徽': '安徽省','河北': '河北省','新疆': '新疆維吾爾自治區',
}# 讀取數據文件
f = open("C:/疫情.txt", "r", encoding="UTF-8")
data = f.read()     # 全部數據
# 關閉文件
f.close()
# 取到各省數據
# 將字符串json轉換為python的字典
data_dict = json.loads(data)        # 基礎數據字典
# 從字典中取出省份的數據
province_data_list = data_dict["areaTree"][0]["children"]
# 組裝每個省份和確診人數為元組,并各個省的數據都封裝入列表內
data_list = []      # 繪圖需要用的數據列表
for province_data in province_data_list:province_name = province_data["name"]                   # 省份名稱province_confirm = province_data["total"]["confirm"]    # 確診人數data_list.append((province_name, province_confirm))# 處理地區名,替換為全稱
processed_data=[(province_mapping.get(area, area), value) for area, value in data_list]
print(processed_data)# 創建地圖對象
map = Map()
# 添加數據
map.add("各省份確診人數", processed_data, "china")
# 設置全局配置,定制分段的視覺映射
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 運行結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38735.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

認識Transformer:入門知識

視頻鏈接: https://www.youtube.com/watch?vugWDIIOHtPA&listPLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index60 文章目錄 Self-Attention layerMulti-head self-attentionPositional encodingSeq2Seq with AttentionTransformerUniversal Transformer Seq2Seq …

淺談 EMP-SSL + 代碼解讀:自監督對比學習的一種極簡主義風

論文鏈接:https://arxiv.org/pdf/2304.03977.pdf 代碼:https://github.com/tsb0601/EMP-SSL 其他學習鏈接:突破自監督學習效率極限!馬毅、LeCun聯合發布EMP-SSL:無需花哨trick,30個epoch即可實現SOTA 主要…

08 qt進程和網絡編程(cs模型)

一 、qt進程 qt中進程最主要的任務就是啟動額外應用程序 并且跟他們之間通信。進程類為QProcess 定義用途Header:#include qmake:QT += coreInherits:QIODevice//繼承于IO設備類1.1 QProcess基本使用 第一步:創建一個QProcess對象 // process = new QProcess(this); //說明…

資訊速遞 | ArkUI-X 預覽版已正式開源!

OpenHarmony項目群技術指導委員會(以下簡稱“TSC”)-跨平臺應用開發框架TSG所孵化項目 —— ArkUI-X,近期已正式開源 ,開發者基于一套主代碼,就可以將在OpenHarmony上開發的精美、高性能應用同時運行在Android、iOS等其…

LNMP環境搭建wordpress以及跳轉后臺報404解決

基于上文配置好的LNMP環境繼續搭建wordpress 目錄 一.到官網下載tar.gz包,并上傳到Linux上,也可以通過復制鏈接地址進行下載 二. 將wordpress中的所有文件移動到你nginx.conf中指定目錄中 三.為wordpress配置數據庫 四.到瀏覽器進行注冊 1.剛開始…

maven編譯始終提示無效的目標發行版的解決方法

摘自個人印象筆記2021-05-07:https://app.yinxiang.com/fx/55e1d5f4-aeea-446a-a768-0f1a48195f5b(圖顯示不完整可查看原筆記內容)1:確保IDE中的編譯版本正確 在idea中,主要看項目屬性中和setting的java compiler中對應的jdk版本是否正確&…

好用的安卓手機投屏到mac分享

工具推薦:scrcpy github地址:https://github.com/Genymobile/scrcpy/tree/master mac使用方式 安裝環境,打開terminal,執行以下命令,沒有brew的先安裝brew brew install scrcpy brew install android-platform-too…

學習 Iterator 迭代器

今天看到一個面試題, 讓下面解構賦值成立。 let [a,b] {a:1,b:2} 如果我們直接在瀏覽器輸出這行代碼,會直接報錯,說是 {a:1,b:2} 不能迭代。 看了es6文檔后,具有迭代器的就一下幾種類型,沒有Object類型,…

404. 左葉子之和

給定二叉樹的根節點 root ,返回所有左葉子之和。 示例 1: 輸入: root [3,9,20,null,null,15,7] 輸出: 24 解釋: 在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24示例 2: 輸入: root [1] 輸出: 0提示: 節點…

【NetCore】09-中間件

文章目錄 中間件:掌控請求處理過程的關鍵1. 中間件1.1 中間件工作原理1.2 中間件核心對象 2.異常處理中間件:區分真異常和邏輯異常2.1 處理異常的方式2.1.1 日常錯誤處理--定義錯誤頁的方法2.1.2 使用代理方法處理異常2.1.3 異常過濾器 IExceptionFilter2.1.4 特性過…

go web框架 gin-gonic源碼解讀02————router

go web框架 gin-gonic源碼解讀02————router 本來想先寫context,但是發現context能簡單講講的東西不多,就準備直接和router合在一起講好了 router是web服務的路由,是指講來自客戶端的http請求與服務器端的處理邏輯或者資源相映射的機制。&…

react實現對數組做增刪改操作自定義hook

需求 實現對數組的增刪改操作。 實現 import { useState } from react;const useArray (currList) > {const [list, setList] useState(currList);// 增const addItem (item) > {setList([...list, item]);};// 刪const removeItem (idx) > {const _arr [...l…

實戰指南,SpringBoot + Mybatis 如何對接多數據源

系列文章目錄 MyBatis緩存原理 Mybatis plugin 的使用及原理 MyBatisSpringboot 啟動到SQL執行全流程 數據庫操作不再困難,MyBatis動態Sql標簽解析 從零開始,手把手教你搭建Spring Boot后臺工程并說明 Spring框架與SpringBoot的關聯與區別 Spring監聽器…

輕松解決docker容器啟動閃退

docker run -p 3306:3306 --name mysql8 \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD666 -d mysql:8.0.32執行這個命令的時候閃退,其實這個是命令是對你…

[cv] stable diffusion——2、公式

背景: 在圖像生成領域中,最常見的生成模型是GAN和VAE。然而,在2020年,提出了一種新的模型,即DDPM(Denoising Diffusion Probabilistic Model),也被稱為擴散模型(Diffusi…

基于eBPF技術構建一種應用層網絡管控解決方案

引言 隨著網絡應用的不斷發展,在linux系統中對應用層網絡管控的需求也日益增加,而傳統的iptables、firewalld等工具難以針對應用層進行網絡管控。因此需要一種創新的解決方案來提升網絡應用的可管理性。 本文將探討如何使用eBPF技術構建一種應用層網絡…

【CSS】禁用元素鼠標事件(例如實現元素禁用效果)

文章目錄 基本用法 基本用法 pointer-events 屬性指定在什么情況下 (如果有) 某個特定的圖形元素可以成為鼠標事件。實際運用中可以通過對auto 和none動態控制,來動態實現元素的禁用效果。 屬性描述auto與pointer-events屬性未指定時的表現效果相同,對…

【筆試題心得】排序算法總結整理

排序算法匯總 常用十大排序算法_calm_G的博客-CSDN博客 以下動圖參考 十大經典排序算法 Python 版實現(附動圖演示) - 知乎 冒泡排序 排序過程如下圖所示: 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰…

【LeetCode-簡單】劍指 Offer 29. 順時針打印矩陣(詳解)

題目 輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。 示例 1: 輸入:matrix [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,2,3,6,9,8,7,4,5]示例 2: 輸入:matrix [[1,2,3,4],[5,6,7,8],[9,10,1…

互聯網發展歷程:速度與效率,交換機的登場

互聯網的演進就像一場追求速度與效率的競賽,每一次的技術升級都為我們帶來更快、更高效的網絡體驗。然而,在網絡的初期階段,人們面臨著數據傳輸速度不夠快的問題。一項關鍵的技術應運而生,那就是“交換機”。 速度不足的困境&…