Python使用 pyecharts 在地圖上打點

在解決某一業務問題時,需要將經緯度表示的點在地圖上表示出來,這里采用 Python的pyecharts模塊進行解決,它提供了豐富的API接口,可以讓開發者使用Python語言實現echarts圖標設計。

版本

pyecharts分為 v0.5.X 和 v1 兩個大版本,v0.5.X 和 v1 間不兼容,v1 是一個全新的版本。本文主要介紹如何利用 v1 版本實現畫地圖功能,而python最全畫地圖,可視化數據一文詳細介紹了利用v0.5.X版本畫地圖,大家可以參考。需要注明的是,v0.5.X支持 Python2.7、3.4+,文檔位于05x-docs.pyecharts.org,而v1僅支持 Python3.6+,文檔位于pyecharts.org

代碼介紹

pyecharts的地理圖表功能主要依靠兩個類Geo和Map,其中Geo實現了一個地理坐標系,地圖上的點可以與經緯度進行轉換(即可以利用經緯度向地圖中插入點,也可以獲取地圖上某一點的經緯度),實現地圖上的打點功能主要依靠Geo類來進行,而Map功能類似于Geo,但只有地圖,沒有坐標系,即地圖上的點無法與經緯度進行轉換。

# v1版本與0.5.X版本包導入方式不同
from pyecharts.charts import Geo
Geo的基本示例:
from example.commons import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType


# 鏈式調用
c = (
    Geo()
    # 加載圖表模型中的中國地圖
    .add_schema(maptype="china")
    # 在地圖中加入點的屬性
    .add("geo", [list(z) for z in zip(Faker.provinces, Faker.values())])
    # 設置坐標屬性
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    # 設置全局屬性
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(),
        title_opts=opts.TitleOpts(title="Geo-基本示例"),
    )
)

# 在 html(瀏覽器) 中渲染圖表
c.render()
# 在 Jupyter Notebook 中渲染圖表
c.render_notebook()

其中,pyecharts中提供了豐富的地圖模型,.add_schema(maptype="china")即是加載中國地圖模型,該地圖模型中已經加入了各個省份的坐標點。
.add("geo", [list(z) for z in zip(Faker.provinces, Faker.values())])是向地圖中加入已有坐標點的屬性,[list(z) for z in zip(Faker.provinces, Faker.values())]中z的值為:

('廣東', 53)
('北京', 46)
('上海', 31)
('江西', 56)
('湖南', 137)
('浙江', 51)
('江蘇', 123)

地圖顯示效果如下圖所示:


Geo-基本示例
Geo在圖中加入自定義的點

前邊說到,加載的中國地圖模型中已經加入了各個省份的坐標點。假如我們要在該圖中加入自定義的點,則需要利用Geo類中的add_coordinate方法。該方法的定義為:

def add_coordinate(
    # 坐標地點名稱
    name: str,

    # 經度
    longitude: Numeric,

    # 緯度
    latitude: Numeric,
)

具體示例代碼如下:

from example.commons import Faker
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType

# 鏈式調用
c = (
        Geo()
        .add_schema(maptype="china")
        # 加入自定義的點,格式為
        .add_coordinate("測試點", 116.39770014211535, 39.90779994986951)
        # 為自定義的點添加屬性
        .add("geo", [("測試點", 51)])
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title="加入自定義的點"))
)
# 在 html(瀏覽器) 中渲染圖表
c.render()
# 在 Jupyter Notebook 中渲染圖表
c.render_notebook()

顯示效果如下:


Geo加入自定義的點
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380