使用Python和Pyecharts創(chuàng)建交互式地圖
簡(jiǎn)介
在數(shù)據(jù)可視化領(lǐng)域,創(chuàng)建交互式地圖是一種強(qiáng)大的方式,可以使受眾能夠以引人入勝且信息豐富的方式探索地理數(shù)據(jù)。本文將深入探討如何使用 Python 和 Pyecharts 庫(kù)創(chuàng)建交互式上海地圖。
Pyecharts 簡(jiǎn)介
Pyecharts 是一個(gè)基于 Python 的可視化庫(kù),它利用 ECharts 的強(qiáng)大功能,ECharts 是一個(gè)流行的 JavaScript 圖表庫(kù)。Pyecharts 允許開發(fā)人員使用 Python 創(chuàng)建各種交互式圖表,包括地圖、折線圖、條形圖等。
C:\pythoncode\new\output\PyechatChinaMap.py
創(chuàng)建上海地圖
以下 Python 代碼演示了如何使用 Pyecharts 創(chuàng)建交互式上海地圖:
import wx import wx.html2 import os import time import logging from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.globals import ThemeType import random # 設(shè)置日志記錄以調(diào)試問題 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') class ChinaMapFrame(wx.Frame): def __init__(self, parent=None, title="中國(guó)地圖展示"): # 設(shè)置框架為全屏大小 screen_width, screen_height = wx.GetDisplaySize() super().__init__(parent, title=title, size=(screen_width, screen_height)) # 創(chuàng)建一個(gè)垂直的sizer來管理布局 sizer = wx.BoxSizer(wx.VERTICAL) # 創(chuàng)建WebView并將其添加到sizer,使其完全展開 self.browser = wx.html2.WebView.New(self) sizer.Add(self.browser, proportion=1, flag=wx.EXPAND | wx.ALL, border=0) # 設(shè)置sizer和布局 self.SetSizer(sizer) self.Layout() self.Centre() self.Maximize(True) # 最大化以確保全屏 self.Show() # 創(chuàng)建并加載中國(guó)地圖 self.create_china_map() def create_china_map(self): """創(chuàng)建上海地圖并在WebView中顯示""" logging.debug("開始創(chuàng)建上海地圖") # 上海示例數(shù)據(jù)(替換為您自己的實(shí)際數(shù)據(jù)) shanghai_districts = [ "黃浦區(qū)", "徐匯區(qū)", "長(zhǎng)寧區(qū)", "靜安區(qū)", "普陀區(qū)", "虹口區(qū)", "楊浦區(qū)", "閔行區(qū)", "寶山區(qū)", "嘉定區(qū)", "浦東新區(qū)", "金山區(qū)", "松江區(qū)", "青浦區(qū)", "奉賢區(qū)", "崇明區(qū)" ] shanghai_values = [random.randint(30, 120) for _ in range(len(shanghai_districts))] # 生成隨機(jī)數(shù)據(jù) shanghai_data = list(zip(shanghai_districts, shanghai_values)) map_chart = ( Map(init_opts=opts.InitOpts( width="100vw", height="100vh", theme=ThemeType.LIGHT, page_title="上海地圖展示" )) .add("上海各區(qū)", shanghai_data, "上海", is_map_symbol_show=False, label_opts=opts.LabelOpts(is_show=True)) # 顯示標(biāo)簽 .set_global_opts( title_opts=opts.TitleOpts(title="上海市行政區(qū)域圖"), visualmap_opts=opts.VisualMapOpts( min_=0, max_=120, is_piecewise=True, range_color=["#50a3ba", "#eac763", "#d94e5d"], # 使用 range_color orient="vertical", pos_left="5%", pos_bottom="5%" ), toolbox_opts=opts.ToolboxOpts(), tooltip_opts=opts.TooltipOpts(trigger="item", formatter=": {c}"), ) ) # 生成HTML文件 html_file = "shanghai_map.html" try: logging.debug(f"正在渲染上海地圖到 {html_file}") map_chart.render(path=html_file) # 不要在此處傳遞模板或環(huán)境。Pyecharts將生成完整的HTML。 logging.debug(f"上海地圖渲染成功到 {html_file}") except Exception as e: logging.error(f"渲染上海地圖時(shí)出錯(cuò):{e}", exc_info=True) return # 在WebView中加載HTML文件 file_path = os.path.join(os.getcwd(), html_file) normalized_path = file_path.replace('\\', '/') file_url = f"file:///{normalized_path}" logging.debug(f"正在加載上海URL:{file_url}") self.browser.LoadURL(file_url) def main(): app = wx.App(False) frame = ChinaMapFrame() app.MainLoop() if __name__ == "__main__": main()
代碼說明
1.導(dǎo)入必要的庫(kù):該代碼段導(dǎo)入了 wxPython(用于創(chuàng)建 GUI 窗口)、pyecharts(用于生成地圖)、os(用于處理文件路徑)和 logging(用于記錄事件)等必要的庫(kù)。
2.ChinaMapFrame 類:
- __init__ 方法創(chuàng)建一個(gè)帶有 wx.html2.WebView 的 wx.Frame 窗口,用于顯示交互式地圖。
- create_china_map 方法使用 Pyecharts 生成上海地圖。它首先定義上海各區(qū)的一些示例數(shù)據(jù),然后使用這些數(shù)據(jù)創(chuàng)建一個(gè) Map 對(duì)象。set_global_opts 方法用于配置地圖的各種選項(xiàng),例如標(biāo)題、視覺映射和工具箱。最后,將地圖渲染到 HTML 文件,并使用 WebView 加載該文件。
3.main 函數(shù):該函數(shù)創(chuàng)建一個(gè) wx.App 對(duì)象并啟動(dòng)主事件循環(huán),從而顯示地圖窗口。
運(yùn)行結(jié)果
總結(jié)
本文介紹了如何使用 Python 和 Pyecharts 創(chuàng)建交互式上海地圖。Pyecharts 提供了各種各樣的地圖類型和配置選項(xiàng),允許您創(chuàng)建滿足特定需求的高度定制化的地圖。通過將 Pyecharts 與 wxPython 等 GUI 庫(kù)結(jié)合使用,您可以將交互式地圖無縫集成到桌面應(yīng)用程序中。
到此這篇關(guān)于使用Python和Pyecharts創(chuàng)建交互式地圖的文章就介紹到這了,更多相關(guān)Python Pyecharts交互式地圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python繪制數(shù)據(jù)動(dòng)態(tài)圖的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言繪制好看的數(shù)據(jù)動(dòng)態(tài)圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手嘗試一下2022-07-07python使用PySimpleGUI設(shè)置進(jìn)度條及控件使用
PySimpleGUI是一個(gè)在tkinter基礎(chǔ)上的,足夠簡(jiǎn)單,方便,pythonic的GUI庫(kù).本文給大家介紹python使用PySimpleGUI設(shè)置進(jìn)度條的方法及進(jìn)度條控件使用代碼,感興趣的朋友跟隨小編一起看看吧2021-06-06Python 解碼Base64 得到碼流格式文本實(shí)例
今天小編就為大家分享一篇Python 解碼Base64 得到碼流格式文本實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python實(shí)現(xiàn)數(shù)字的格式化輸出
這篇文章主要介紹了Python如何實(shí)現(xiàn)數(shù)字的格式化輸出,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08pandas之關(guān)于DataFrame數(shù)據(jù)類型超好用的方法
這篇文章主要介紹了pandas之關(guān)于DataFrame數(shù)據(jù)類型超好用的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11一文教會(huì)你使用win10實(shí)現(xiàn)電腦的定時(shí)任務(wù)執(zhí)行
這篇文章主要介紹了一文教會(huì)你使用win10實(shí)現(xiàn)電腦的定時(shí)任務(wù)執(zhí)行,利用Windows任務(wù)計(jì)劃程序創(chuàng)建定時(shí)執(zhí)行自定義腳本的步驟,包括配置環(huán)境、編寫腳本、新建任務(wù)文件夾、設(shè)置觸發(fā)器、編輯任務(wù)信息以及手動(dòng)運(yùn)行測(cè)試,需要的朋友可以參考下2024-09-09Python中正則表達(dá)式對(duì)單個(gè)字符,多個(gè)字符和匹配邊界等使用
這篇文章主要介紹了Python中正則表達(dá)式對(duì)單個(gè)字符,多個(gè)字符和匹配邊界等使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01