pyecharts對于經緯度_一文帶你掌握Pyecharts地理數據可視化的方法

本文主要介紹了Pyecharts地理數據可視化,分享給大家,具體如下:

2e53ficyrca.jpg

一、Pyecharts簡介和安裝

1. 簡介

Echarts 是一個由百度開源的數據可視化,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而 Python 是一門富有表達力的語言,很適合用于數據處理。當數據分析遇上數據可視化時,pyecharts 誕生了。

簡潔的 API 設計,使用如絲滑般流暢,支持鏈式調用

囊括了 30+ 種常見圖表,應有盡有

支持主流 Notebook 環境,Jupyter Notebook 和 JupyterLab

可輕松集成至 Flask,Sanic,Django 等主流 Web 框架

高度靈活的配置項,可輕松搭配出精美的圖表

詳細的文檔和示例,幫助開發者更快的上手項目

多達 400+ 地圖文件,并且支持原生百度地圖,為地理數據可視化提供強有力的支持

pyecharts版本v0.5.x 和 v1 間不兼容,v1 是一個全新的版本,語法也有很大不同。

2. 安裝

安裝pyecharts

pip install pyecharts -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

import pyecharts

print(pyecharts.__version__) # 查看當前pyecharts版本

安裝相關的地圖擴展包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-countries-pypkg # 全球國家地圖

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-provinces-pypkg # 中國省級地圖

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-cities-pypkg # 中國市級地圖

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-counties-pypkg # 中國縣區級地圖

二、地圖可視化

1. 世界地圖

利用 Starbucks.csv 中的數據,首先計算每個國家(Country)對應的門店數量,然后使用世界地圖可視化展示星巴克門面店在全球的數量分布。

# -*- coding: UTF-8 -*-

"""

@File :demo1.py

@Author :葉庭云

@CSDN :https://yetingyun.blog.csdn.net/

"""

import pandas as pd

from pyecharts.charts import Map

from pyecharts import options as opts

from pyecharts.globals import ThemeType, CurrentConfig

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

# pandas讀取csv文件里的數據

df = pd.read_csv("Starbucks.csv")['Country']

# 統計各個地區星巴克門店數量

data = df.value_counts()

datas = [(i, int(j)) for i, j in zip(data.index, data.values)]

# 實例化一個Map對象

map_ = Map(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))

# 世界地圖

map_.add("門店數量", data_pair=datas, maptype="world")

map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 不顯示label

map_.set_global_opts(

title_opts=opts.TitleOpts(title="星巴克門店數量在全球分布", pos_left='40%', pos_top='10'), # 調整title位置

legend_opts=opts.LegendOpts(is_show=False),

visualmap_opts=opts.VisualMapOpts(max_=13608, min_=1, is_piecewise=True,

pieces=[{"max": 9, "min": 1, "label": "1-9", "color": "#00FFFF"}, # 分段 添加圖例注釋和顏色

{"max": 99, "min": 10, "label": "10-99", "color": "#A52A2A"},

{"max": 499, "min": 100, "label": "100-499", "color": "#0000FF"},

{"max": 999, "min": 500, "label": "500-999", "color": "#FF00FF"},

{"max": 2000, "min": 1000, "label": "1000-2000", "color": "#228B22"},

{"max": 3000, "min": 2000, "label": "2000-3000", "color": "#FF0000"},

{"max": 20000, "min": 10000, "label": ">=10000", "color": "#FFD700"}

])

)

# 渲染在網頁上

map_.render('星巴克門店在全球的分布.html')

運行效果如下:

cdlsjlkrlya.jpg

2. 國家地圖

漣漪散點圖

利用 china.csv 中的數據,首先計算每個城市(City)對應的門店數量,然后使用 pyecharts 包內 Geo 模塊繪制星巴克門面店在中國各城市的數量分布的漣漪散點地圖。

import pandas as pd

from pyecharts.globals import ThemeType, CurrentConfig, GeoType

from pyecharts import options as opts

from pyecharts.charts import Geo

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

# pandas讀取csv文件數據

df = pd.read_csv("china.csv")['City']

data = df.value_counts()

datas = [(i, int(j)) for i, j in zip(data.index, data.values)]

print(datas)

geo = Geo(init_opts=opts.InitOpts(width='1000px', height='600px', theme=ThemeType.DARK))

geo.add_schema(maptype='china', label_opts=opts.LabelOpts(is_show=True)) # 顯示label 省名

geo.add('門店數量', data_pair=datas, type_=GeoType.EFFECT_SCATTER, symbol_size=8)

geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

geo.set_global_opts(title_opts=opts.TitleOpts(title='星巴克門店在中國的分布'),

visualmap_opts=opts.VisualMapOpts(max_=550, is_piecewise=True,

pieces=[{"max": 50, "min": 0, "label": "0-50", "color": "#708090"}, # 分段 添加圖例注釋 和顏色

{"max": 100, "min": 51, "label": "51-100", "color": "#00FFFF"},

{"max": 200, "min": 101, "label": "101-200", "color": "#00008B"},

{"max": 300, "min": 201, "label": "201-300", "color": "#8B008B"},

{"max": 600, "min": 500, "label": "500-600", "color": "#FF0000"},

])

)

geo.render("星巴克門店在中國的分布.html")

運行效果如下:

wwfjt1zm1bt.jpg

動態軌跡圖

# -*- coding: UTF-8 -*-

"""

@File :demo3.py

@Author :葉庭云

@CSDN :https://yetingyun.blog.csdn.net/

"""

from pyecharts import options as opts

from pyecharts.charts import Geo

from pyecharts.globals import ChartType, SymbolType, CurrentConfig, ThemeType

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

# 鏈式調用

c = (

Geo()

.add_schema(

maptype="china",

itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),

label_opts=opts.LabelOpts(is_show=True)

)

.add(

"",

[("廣州", 55), ("北京", 66), ("杭州", 77), ("重慶", 88), ('成都', 100), ('海口', 80)],

type_=ChartType.EFFECT_SCATTER,

color="white",

)

.add(

"",

[("廣州", "上海"), ("廣州", "北京"), ("廣州", "杭州"), ("廣州", "重慶"),

('成都', '海口'), ('海口', '北京'), ('海口', '重慶'), ('重慶', '上海')

],

type_=ChartType.LINES,

effect_opts=opts.EffectOpts(

symbol=SymbolType.ARROW, symbol_size=6, color="blue" # 軌跡線藍色

),

linestyle_opts=opts.LineStyleOpts(curve=0.2), # 軌跡線彎曲度

)

.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

.set_global_opts(title_opts=opts.TitleOpts(title="動態軌跡圖"))

.render("geo_lines_background.html")

)

運行效果如下:

j43kulkckpm.jpg

3. 省市地圖

熱力圖

# -*- coding: UTF-8 -*-

"""

@File :demo4.py

@Author :葉庭云

@CSDN :https://yetingyun.blog.csdn.net/

"""

from pyecharts import options as opts

from pyecharts.charts import Geo

from pyecharts.faker import Faker

from pyecharts.globals import GeoType, CurrentConfig

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

c = (

Geo()

.add_schema(maptype="廣東", label_opts=opts.LabelOpts(is_show=True))

.add(

"熱力圖",

[list(z) for z in zip(Faker.guangdong_city, Faker.values())],

type_=GeoType.HEATMAP,

)

.set_series_opts(label_opts=opts.LabelOpts(is_show=True))

.set_global_opts(

visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-廣東地圖")

)

.render("geo_guangdong.html")

)

運行效果如下:

vmcz4hmmjgb.jpg

地圖上批量添加經緯度數據

數據來源于美團網成都地區酒店信息,利用其中酒店的經緯度數據,批量添加在地圖上可視化。

# -*- coding: UTF-8 -*-

"""

@File :demo5.py

@Author :葉庭云

@CSDN :https://yetingyun.blog.csdn.net/

"""

import pandas as pd

from pyecharts.charts import Geo

from pyecharts import options as opts

from pyecharts.globals import GeoType, CurrentConfig, ThemeType

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

# 讀取Excel數據 數據來源美團網酒店信息

df = pd.read_excel("hotel.xlsx")

# 獲取 地點 經緯度信息

geo_sight_coord = {df.iloc[i]['酒店地址']: [df.iloc[i]['經度'], df.iloc[i]['緯度']] for i in range(len(df))}

data = [(df['酒店地址'][j], f"{int(df['最低價'][j])}元(最低價)") for j in range(len(df))]

# print(data)

# print(geo_sight_coord)

# 實例化Geo對象 導入成都地圖

g = Geo(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION, width="1000px", height="600px"))

g.add_schema(maptype="成都")

for k, v in list(geo_sight_coord.items()):

# 添加地址、經緯度數據

g.add_coordinate(k, v[0], v[1])

# 生成漣漪散點圖

g.add("", data_pair=data, type_=GeoType.EFFECT_SCATTER, symbol_size=6)

g.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

g.set_global_opts(title_opts=opts.TitleOpts(title="成都-酒店地址分布"))

g.render("酒店地址分布.html")

運行效果如下:

3olja3ee5a5.jpg

到此這篇關于一文帶你掌握Pyecharts地理數據可視化的方法的文章就介紹到這了,更多相關Pyecharts地理數據可視化內容請搜索聚米學院以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持聚米學院!

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

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

相關文章

使用Sqlmap對dvwa進行sql注入測試(初級階段)

0.測試準備 1)打開Kali虛擬機終端; 2)打開靶機OWASP,并通過瀏覽器,輸入IP地址進入dvwa的主頁,然后選擇SQL injection進入SQL注入的測試頁面 1.獲取DVWA的url和cookie 在輸入框中輸入1,顯示有內容&…

什么是軟件生命周期

軟件生命周期又稱為軟件生存周期或系統開發生命周期,是軟件的產生直到報廢的生命周期,周期內有問題定義、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種…

STL中map和string, vector 用法詳解

1. map 用法詳解 std map是STL的一個關聯容器,它提供一對一(其中第一個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值)的數據處理能力,由于這個特性,它完成有可能…

如果備份還原SecureCRT、Xshell遠程工具遠程

因為有時候電腦操作系統要重新安裝,需要將遠程備份下來。或者要將遠程發給其他同事。一、如何備份還原SecureCRT遠程1、打開options-global options---general---configuration paths找到配置文件保存路徑,如下圖:2、打開C:\Users\NUC\AppDat…

Centos7 下yum安裝mysql

轉載于:https://www.cnblogs.com/nbjjy/p/9023991.html

Python協程--迭代器

0. 實現一個可以迭代的對象 1)要想使一個對象實現迭代的功能,須實現__iter__和__next__方法。 2)判斷classmate是否是可以迭代的對象: from collections import Iterable isinstance(classmate, Iterable)結果為True則說明是可以…

什么是敏捷開發

什么是敏捷開發? 敏捷開發(Agile Development)是一種以人為核心、迭代、循序漸進的開發方法。 怎么理解呢?首先,我們要理解它不是一門技術,它是一種開發方法,也就是一種軟件開發的流程,它會指導我們用規定的…

May 18:PHP 輸出語句

通過前面的學習了解了php的基本語法,今天向大家簡單介紹php的幾種輸出方式: 1. echo 常用的輸出語句,例如:echo helloworld!; 2. print() 輸出語句,有返回值。例如:print(helloworld&#x…

SendMessage、PostMessage原理和源代碼詳解

本文講解SendMessage、PostMessage兩個函數的實現原理,分為三個步驟進行講解,分別適合初級、中級、高級程序員進行理解,三個步驟分別為: 1、SendMessage、PostMessage的運行機制。 2、SendMessage、PostMessage的運行內幕。 3、…

Python協程--實現斐波那契數列(Fibonacci)的幾種方式

1.使用for遍歷list數組 # 使用for遍歷list數組 nums list() a 0 b 1 i 0while i < 10:nums.append(a)a, b b, abi 1for num in nums:print(num)2.使用迭代器完成 class Fibonacci(object):def __init__(self, all_num):self.all_num all_numself.current_num 0sel…

敏捷開發宣言

敏捷開發宣言&#xff1a; 1. 個體和交互勝過過程和工具 2. 可工作的軟件勝過面面俱到的文檔 3. 客戶協作勝過合同談判 4. 響應變化勝過遵循計劃 從上面的宣言可以看出&#xff0c;敏捷開發的核心是人 、協作、時刻可運行的軟件、變化。

java fast math,Java FastMath.signum方法代碼示例

import org.apache.commons.math3.util.FastMath; //導入方法依賴的package包/類/*** {inheritDoc}*/Overrideprotected double doSolve()throws TooManyEvaluationsException,NoBracketingException {double min getMin();double max getMax();// [x1, x2] is the bracketin…

什么是可行性研究

1.并非任何問題都有簡單明顯的解決辦法&#xff0c;事實上&#xff0c;許多問題不可能在預定的系統規模或時間期限之內解決。2.如果問題沒有可行的解&#xff0c;那么花費在這項工程上的任何時間、人力、軟硬件資源和經費&#xff0c;都是無謂的浪費。3.可行性研究的目的&#…

FTP服務的簡介和配置詳解

FTP服務的簡介和配置詳解注意&#xff1a;配置FTP服務時&#xff0c;最好關閉防火墻和selinux1、FTP服務簡介FTP 是File Transfer Protocol&#xff08;文件傳輸協議&#xff09;的英文簡稱&#xff0c;而中文簡稱為“文件傳輸協議”。用于Internet上的控制文件的雙向傳輸。同時…

Python協程--生成器(通過異常來判斷生成器已經結束)

以實現斐波那契數列為例&#xff1a; def create_num(all_num):a, b 0, 1current_num 0while current_num < all_num:yield a # 如果一個函數中有yield語句&#xff0c;那么這個就不在是函數&#xff0c;而是一個生成器的模板a, b b, abcurrent_num 1return "ok.…

四種類型轉換 cast

1.static_cast 2.dynamic_cast 3.const_cast 4. reinterpret_cast 例子1&#xff1a; float x; cout<<static_cast<int>(x); ... f(static_cast<string>("hello")); 例子2&#xff1a; class Car; class Cabriolet:pbulic Car { …

java獲取不重復訂單號,Java 生成永不重復的訂單號

package com.taiping.test;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;public class Test12 {/*** 生成永不重復的訂單號* param startLetter 訂單號開頭字符串* param size 訂單號中隨機的大寫字母個數* return*/public static String…

CSS中position屬性(abusolute | relative | static | fixed)區別

關于css3中position屬性的定義&#xff1a; 轉載于:https://www.cnblogs.com/tangjiao/p/9025934.html

什么是系統流程圖

系統流程圖是概括地描繪物理系統的傳統工具。它的基本思想是用圖形符號以黑盒子的形式描繪組成系統的每個部件&#xff08;程序&#xff0c;文檔&#xff0c;數據庫&#xff0c;人工過程等&#xff09;。系統流程圖表達的是數據在系統各部件之間流動的情況&#xff0c;而不是對…

Python協程--生成器(實現多任務)

0.生成器 1.使用yield完成多任務 import timedef task_1():while True:print("---1----")time.sleep(0.1)yielddef task_2():while True:print("---2----")time.sleep(0.1)yielddef main():t1 task_1()t2 task_2()# 先讓t1運行一會&#xff0c;當t1中遇…