劉早起 一行玩python 2020-05-13
說到使用Python進行地理坐标可視化那就一定少不了Pyecharts的身影,本文就對Pyecharts可以制作的四種地圖進行簡單的評析。
Pyecharts—Map
首先介紹的是Pyecharts中使用最多的Map(),核心代碼僅四行即可生成全國地圖,來看下官方Demo
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker
c = (
Map()
.add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
.set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"))
.render("map_base.html")
)
我們看下中間四行代碼究竟做了什麼:
-
建立了一個地圖執行個體.Map()
-
添加了資料,實際上zip()中就是兩個list,一個是省份名稱另一個是對應的資料.add()
-
添加了标題.set_global_opts()
-
将生成的地圖以html格式儲存.render()
是以這個最簡單的地圖長這樣

告訴我你對這張地圖的第一感覺,除了醜就是不協調,主要就是因為下面三點:
- 頂部的圖例,怎麼看怎麼不爽
- 有資料省份的紅點,怎麼看怎麼不爽
- 就在地圖上給有資料的省份打了幾個點,怎麼看怎麼不爽
是以我在使用Map()的時候一般會對上面三點進行調整,還是一樣的資料,代碼可以這麼寫
c = (
Map()
.add("", [list(z) for z in zip(Faker.provinces, Faker.values())], "china",is_map_symbol_show=False,)
.set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"), visualmap_opts=opts.VisualMapOpts())
.render_notebook()
)
這樣看已經比剛開始的樣子好了很多,雖然可以看出不同省份之間的差異,但是還是有一點讓人不爽的就是大部分省份是沒有值的,要是全國都有值就更好了👇
是以Pyecharts中的Map更應該适合能将地圖填滿的資料,這樣才能讓圖看上去更豐富,如果隻有地圖中小部分省市的資料還是來個柱狀圖更直覺!
Pyecharts—Geo
我們先來看看Geo繪制出來的地圖長啥樣,還是剛剛的資料,代碼也并不複雜
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker
from pyecharts.globals import ChartType
c = (
Geo()
.add_schema(maptype="china")
.add(
"",
[list(z) for z in zip(Faker.provinces, Faker.values())],
type_=ChartType.HEATMAP,
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(),
title_opts=opts.TitleOpts(title="Geo-熱力地圖"),
)
)
c.render_notebook()
可以看到,Geo繪制出來的地圖不會顯示省份/城市的名字,并且用熱力圖的方式讓資料差異更直覺,而這恰好解決了Map不适用與小部分資料的短闆。是以當資料量不是很多的時候又想繪制地圖就可以考慮使用Geo并通過熱力圖的方法來展示。當然Geo還支援不同樣式動态的流向地圖(制作可以查閱相關文檔)
Pyecharts—Bmap
Bmap就是百度地圖,也是我經常用的一種。Pyecharts可以調用百度地圖的接口來讓地圖更加豐富,比如還是之前的資料,我們使用Bmap來制作
正如上圖展示的,使用Bmap繪制出來的地圖更接近我們平時使用的地圖,并支援縮放來檢視更多細節而更加真實,不過使用Bmap之前需要去百度地圖開放平台申請一個API KEY才能使用。
Pyecharts—Map3D
上面三種地圖都是2D的圖形,Pyecharts也支援建立3d地圖,比如下面的代碼就能在3D地圖上以柱狀圖來展示資料
可以看到,3D地圖會讓資料更加立體的展示出來,不過雖然炫酷,但是要整理經緯度資料等需要消耗太多的時間,而且代碼調整起來也比之前幾種地圖更加複雜,是以我并不是經常使用,偶爾花點時間用來點綴PPT也是可以的!
結束語
以上就是對Pyecharts可以制作四種地理圖表的一個簡單總結,我想你應該明白它們的差別并能在制作地圖時選擇合适的那一個,不過制作可視化地圖并不隻有Pyecharts,還需要根據自己的資料與環境選擇合适的工具!