在解決某一業(yè)務(wù)問題時梨熙,需要將經(jīng)緯度表示的點在地圖上表示出來突想,這里采用 Python的
pyecharts
模塊進行解決,它提供了豐富的API接口哗咆,可以讓開發(fā)者使用Python語言實現(xiàn)echarts圖標設(shè)計蜘欲。
版本
pyecharts
分為 v0.5.X 和 v1 兩個大版本,v0.5.X 和 v1 間不兼容晌柬,v1 是一個全新的版本姥份。本文主要介紹如何利用 v1 版本實現(xiàn)畫地圖功能,而python最全畫地圖年碘,可視化數(shù)據(jù)一文詳細介紹了利用v0.5.X版本畫地圖澈歉,大家可以參考。需要注明的是屿衅,v0.5.X支持 Python2.7埃难、3.4+,文檔位于05x-docs.pyecharts.org涤久,而v1僅支持 Python3.6+涡尘,文檔位于pyecharts.org。
代碼介紹
pyecharts
的地理圖表功能主要依靠兩個類Geo和Map拴竹,其中Geo實現(xiàn)了一個地理坐標系悟衩,地圖上的點可以與經(jīng)緯度進行轉(zhuǎn)換(即可以利用經(jīng)緯度向地圖中插入點,也可以獲取地圖上某一點的經(jīng)緯度)栓拜,實現(xiàn)地圖上的打點功能主要依靠Geo類來進行座泳,而Map功能類似于Geo,但只有地圖幕与,沒有坐標系挑势,即地圖上的點無法與經(jīng)緯度進行轉(zhuǎn)換。
# v1版本與0.5.X版本包導(dǎo)入方式不同
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
# 鏈式調(diào)用
c = (
Geo()
# 加載圖表模型中的中國地圖
.add_schema(maptype="china")
# 在地圖中加入點的屬性
.add("geo", [list(z) for z in zip(Faker.provinces, Faker.values())])
# 設(shè)置坐標屬性
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
# 設(shè)置全局屬性
.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")
即是加載中國地圖模型,該地圖模型中已經(jīng)加入了各個省份的坐標點诫给。
.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在圖中加入自定義的點
前邊說到啦扬,加載的中國地圖模型中已經(jīng)加入了各個省份的坐標點。假如我們要在該圖中加入自定義的點凫碌,則需要利用Geo類中的add_coordinate
方法扑毡。該方法的定義為:
def add_coordinate(
# 坐標地點名稱
name: str,
# 經(jīng)度
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
# 鏈式調(diào)用
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()
顯示效果如下: