天天看點

【安排】Pyecharts制作地圖的幾種方法評析

劉早起 一行玩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()

    建立了一個地圖執行個體
  • .add()

    添加了資料,實際上zip()中就是兩個list,一個是省份名稱另一個是對應的資料
  • .set_global_opts()

    添加了标題
  • .render()

    将生成的地圖以html格式儲存

是以這個最簡單的地圖長這樣

【安排】Pyecharts制作地圖的幾種方法評析

告訴我你對這張地圖的第一感覺,除了醜就是不協調,主要就是因為下面三點:

  • 頂部的圖例,怎麼看怎麼不爽
  • 有資料省份的紅點,怎麼看怎麼不爽
  • 就在地圖上給有資料的省份打了幾個點,怎麼看怎麼不爽

是以我在使用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制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析

這樣看已經比剛開始的樣子好了很多,雖然可以看出不同省份之間的差異,但是還是有一點讓人不爽的就是大部分省份是沒有值的,要是全國都有值就更好了👇

【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析

是以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()      
【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析

可以看到,Geo繪制出來的地圖不會顯示省份/城市的名字,并且用熱力圖的方式讓資料差異更直覺,而這恰好解決了Map不适用與小部分資料的短闆。是以當資料量不是很多的時候又想繪制地圖就可以考慮使用Geo并通過熱力圖的方法來展示。當然Geo還支援不同樣式動态的流向地圖(制作可以查閱相關文檔)

【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析

Pyecharts—Bmap

Bmap就是百度地圖,也是我經常用的一種。Pyecharts可以調用百度地圖的接口來讓地圖更加豐富,比如還是之前的資料,我們使用Bmap來制作

【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析

正如上圖展示的,使用Bmap繪制出來的地圖更接近我們平時使用的地圖,并支援縮放來檢視更多細節而更加真實,不過使用Bmap之前需要去百度地圖開放平台申請一個API KEY才能使用。

【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析

Pyecharts—Map3D

上面三種地圖都是2D的圖形,Pyecharts也支援建立3d地圖,比如下面的代碼就能在3D地圖上以柱狀圖來展示資料

【安排】Pyecharts制作地圖的幾種方法評析
【安排】Pyecharts制作地圖的幾種方法評析

可以看到,3D地圖會讓資料更加立體的展示出來,不過雖然炫酷,但是要整理經緯度資料等需要消耗太多的時間,而且代碼調整起來也比之前幾種地圖更加複雜,是以我并不是經常使用,偶爾花點時間用來點綴PPT也是可以的!

結束語

以上就是對Pyecharts可以制作四種地理圖表的一個簡單總結,我想你應該明白它們的差別并能在制作地圖時選擇合适的那一個,不過制作可視化地圖并不隻有Pyecharts,還需要根據自己的資料與環境選擇合适的工具!