主頁 > 知識庫 > Pyecharts 中Geo函數(shù)常用參數(shù)的用法說明

Pyecharts 中Geo函數(shù)常用參數(shù)的用法說明

熱門標(biāo)簽:百度AI接口 客戶服務(wù) 硅谷的囚徒呼叫中心 企業(yè)做大做強(qiáng) Win7旗艦版 語音系統(tǒng) 電話運營中心 呼叫中心市場需求

一、Pyeharts簡介

pyecharts 是一個用于生成 Echarts 圖表的類庫。用 Echarts 生成的圖可視化效果很不錯,pyecharts庫是用來與 Python 進(jìn)行對接,方便在 Python 中直接使用數(shù)據(jù)生成圖。

最新的Pyecharts庫版本是v1,且與老版本 v0.5.X 是不兼容的,v0.5.X版本也已不再維護(hù)。新舊版本的Geo有著較大改動,本篇均是基于舊版本0.5.11

二、Pyecharts安裝

pyecharts的安裝說明很簡單,也有很多大佬寫了過程,本篇不贅述,主要說一下指定版本的問題。

安裝pyecharts

Pyecharts v1版本的安裝可使用pip install pyecharts -U

Pyecharts v0.5.X版本的安裝可使用pip install pyecharts==0.5.11

安裝對應(yīng)的地圖拓展

pip install echarts-countries-pypkg 
pip install echarts-china-provinces-pypkg 
pip install echarts-china-cities-pypkg 
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg

全球國家地圖:echarts-countries-pypkg (1.9MB)

中國省級地圖:echarts-china-provinces-pypkg (730KB)

中國市級地圖:echarts-china-cities-pypkg (3.8MB)

中國區(qū)縣地圖:echarts-china-counties-pypkg

中國大區(qū)地圖:echarts-china-misc-pypkg(如:華南、華北等)

三、Geo常用參數(shù)說明

1、創(chuàng)建Geo:geo=Geo()

geo=Geo()是畫出地圖的背景。

Geo(title,subtitle,width,height,title_pos,title_top,title_color,subtitle_color,title_text_size,subtitle_text_size,background_color,page_title,renderer,is_animation)

各參數(shù)說明如下。

實際使用過程中,我們其實經(jīng)常用到的就幾個參數(shù),如title,width,height,background_color,只要搞這幾個基本就夠用了,所有參數(shù)都有默認(rèn)值,這意味著在最極端情況下,直接用Geo()也可以,不過畫出來的就是一張白紙罷了。

Init docstring:
  :param title:
   主標(biāo)題文本,支持換行,默認(rèn)為 ""
  :param subtitle:
   副標(biāo)題文本,支持換行,默認(rèn)為 ""
  :param width:
   畫布寬度,默認(rèn)為 800(px)
  :param height:
   畫布高度,默認(rèn)為 400(px)
  :param title_pos:
   標(biāo)題距離左側(cè)距離,默認(rèn)為'left',有'auto', 'left', 'right',
   'center'可選,也可為百分比或整數(shù)
  :param title_top:
   標(biāo)題距離頂部距離,默認(rèn)為'top',有'top', 'middle', 'bottom'可選,
   也可為百分比或整數(shù)
  :param title_color:
   主標(biāo)題文本顏色,默認(rèn)為 '#000'
  :param subtitle_color:
   副標(biāo)題文本顏色,默認(rèn)為 '#aaa'
  :param title_text_size:
   主標(biāo)題文本字體大小,默認(rèn)為 18
  :param subtitle_text_size:
   副標(biāo)題文本字體大小,默認(rèn)為 12
  :param background_color:
   畫布背景顏色,默認(rèn)為 '#fff'
  :param page_title:
   指定生成的 html 文件中 title> 標(biāo)簽的值。默認(rèn)為 'Echarts'
  :param renderer:
   指定使用渲染方式,有 'svg' 和 'canvas' 可選,默認(rèn)為 'canvas'。
   3D 圖僅能使用 'canvas'。
  :param extra_html_text_label:
   額外的 HTML 文本標(biāo)簽,(p> 標(biāo)簽)。類型為 list,list[0] 為文本內(nèi)容,
   list[1] 為字體風(fēng)格樣式(選填)。如 ["this is a p label", "color:red"]
  :param is_animation:
   是否開啟動畫,默認(rèn)為 True。V0.5.9+

舉例子:

from pyecharts import Geo
 
geo =Geo("Geo地圖示例", "副標(biāo)題",width=500, height=500, title_pos='center',title_top=20, title_color="#2E2E2E",
   subtitle_color='#aaa',title_text_size=16,subtitle_text_size=12,background_color='#EEEEE8',
   page_title='Echarts',renderer='canvas',is_animation=True)
 
geo

2、geo.add_coordinate()新增坐標(biāo)點

geo.add_coordinate()的作用就是新增,比如現(xiàn)在調(diào)用一張廣州地圖,現(xiàn)在要在顯示一個特定的點“測試1”,像這樣的點就必須用add_coordinate新增進(jìn)去,否則會報錯(ValueError: No coordinate is specified for 測試1)。

geo.add_coordinate(點名稱,經(jīng)度,緯度),3個參數(shù)都是必填項

geo.add_coordinate('測試點1',113.40,23.07)

3、geo.add()展示坐標(biāo)點

geo.add()的作用就是將點展示到上面加載的地圖上,add有一大堆的參數(shù),最常用的是series_name、names、value、type、maptype、is_visualmap、visual_range、visual_text_color、symbol_size,其中series_name、names、value、maptype這四個是必填項

# 系列名稱,用于 tooltip 的顯示,legend 的圖例篩選。
 series_name: str,
 
 # 數(shù)據(jù)項 (坐標(biāo)點名稱)
 names:list
 
 # 數(shù)據(jù)項 (坐標(biāo)點值)
 value: list
 
 # Geo 圖類型,有 scatter, effectScatter, heatmap, lines 4 種
 type: 默認(rèn)"scatter",
 
 # 是否選中圖例
 is_selected: 默認(rèn)True,
 
 # 標(biāo)記圖形形狀,circle,pin,rect,diamon,roundRect,arrow,triangle
 symbol: 默認(rèn)circle,
 
 # 標(biāo)記的大小
 symbol_size: 默認(rèn)12,
 
 # 系列 label 顏色
 color: 默認(rèn)None,
 
 # 是否是多段線,在畫 lines 圖情況下
 is_polyline: 默認(rèn) False,
 
 # 是否啟用大規(guī)模線圖的優(yōu)化,在數(shù)據(jù)圖形特別多的時候(>=5k)可以開啟
 is_large: 默認(rèn) False,
 
 # 特效尾跡的長度。取從 0 到 1 的值,數(shù)值越大尾跡越長。
 trail_length:默認(rèn) 0.2
 
 # 地圖選擇,如廣東、廣州、china
 maptype
 
 #不知道什么作用,只知道默認(rèn)Ture
 is_random
 
 #是否開啟鼠標(biāo)縮放和平移漫游。'scale'縮放、'move'平移、'True'都開啟
 is_roam:默認(rèn)True
 
 #顯示圖例條
 is_visualmap:默認(rèn)True
 
 #圖例條范圍
 visual_range
 
 #圖例條顏色
 visual_text_color
 
 #常態(tài)下地圖的顏色
 geo_normal_color
 
 #觸發(fā)下地圖的顏色(鼠標(biāo)放在地圖上)
 geo_emphasis_color
 
 #漣漪的多少,當(dāng)type="effectScatter"時才有效
 effect_scale
 
 #顯示標(biāo)簽
 is_label_show
 
 #標(biāo)簽顏色
 label_text_color
 
 #標(biāo)簽位置(inside,top,bottom,left,right)
 label_pos:默認(rèn)"inside"
 
 #邊界顏色
 border_color

舉例子

from pyecharts import Geo
 
districts=['荔灣區(qū)', '花都區(qū)', '番禺區(qū)','測試點1']
value = [ 200, 200,300,400]
 
geo =Geo("Geo地圖示例", "副標(biāo)題",width=500, height=500, title_pos='center',title_top=20, title_color="#2E2E2E",
   subtitle_color='#aaa',title_text_size=16,subtitle_text_size=12,background_color='#EEEEE8',
   page_title='Echarts',renderer='canvas',is_animation=True)
 
geo.add_coordinate('測試點1',113.40,23.07)
geo.add("系列名1", 
  districts, value,type="effectScatter",is_selected=True,symbol='circle',symbol_size=20,color=None,
  maptype='廣州',is_roam=True,is_visualmap=True, visual_range=[0,500],visual_text_color="#2E2E2E",
  geo_normal_color="#323c48",geo_emphasis_color='#2a033d', effect_scale=3,
  is_label_show=True,label_text_color="#00FF00",label_pos="inside"
  )
 
geo.render("廣州測試2.html")
geo

在這里有2個問題還沒解決。第一、不知道is_random參數(shù)的作用,感覺不管是True或False都沒影響;第二、如上圖的series_name “系列名1”,不知道如何改變它的位置,如移動到左邊右邊等。

4、geo.render()保存文件

geo.render()很簡單了,就是將地圖保存為文件出來,render只有一個參數(shù),就是path路徑

geo.render("廣州測試2.html")

補(bǔ)充:Pyecharts v1 Geo庫的一些更新與應(yīng)用

最近在利用Python進(jìn)行爬蟲的過程中,需要對網(wǎng)頁中爬取的數(shù)據(jù)做一些可視化的處理,其中有部分?jǐn)?shù)據(jù)是關(guān)于地區(qū)分布的,在地圖上標(biāo)注出具體的參數(shù)分布將使得數(shù)據(jù)更加的直觀與生動。

地圖標(biāo)注的工具我選擇使用的是Pyecharts庫中Geo,運行在Pycharm下,值得注意的是,最新的Pyecharts庫版本是v1, 是最新的版本,且與老版本 v0.5.X 是不兼容的,v0.5.X版本也已不再維護(hù),所以建議以后盡量應(yīng)用最新的v1版,本文也將在此對其進(jìn)行一些Geo庫的更新應(yīng)用的說明。

Pyecharts v1版本的安裝可使用pip install pyecharts -U,也可直接在Pycharm中安裝Pyecharts,其說明文檔地址為https://pyecharts.org/#/zh-cn/intro

Pyecharts v0.5.X版本的安裝可使用pip install pyecharts==0.5.11,其說明文檔地址為https://05x-docs.pyecharts.org/#/zh-cn/prepare

新版本Pyecharts中的地理圖表Geo有著較大的改動,總的一個最直觀的更新感受是,新的庫沒有以前那么繁瑣了,應(yīng)用起來更簡單直接。因為本人剛接觸Python,很多東西也是剛剛?cè)腴T,現(xiàn)階段也只是達(dá)到能夠初步使用Geo的程度,在探索使用新版本的過程中發(fā)現(xiàn)網(wǎng)上關(guān)于新板Pyecharts的說明很少,所以在這里將自己遇到的一些問題以及自己的一些見解整理出來,以下的一些說明與理解可能較為粗淺,萬望各位讀者見諒。

Geo:地理坐標(biāo)系

Geo作為一個地理坐標(biāo)標(biāo)注的工具,在功能上新老版本基本是一致的,但在細(xì)節(jié)上卻有著很大的差別,這也導(dǎo)致了新舊代碼是完全不通用的。

1. 創(chuàng)建Geo:geo = Geo()

在v0.5.X版本中在創(chuàng)建geo的過程中是可以對其進(jìn)行一些基本參數(shù)設(shè)定的

如以說明文檔中的例子:

geo = Geo("全國主要城市空氣質(zhì)量", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600, background_color="#404a59", ) 

可以設(shè)定主標(biāo)題,副標(biāo)題,標(biāo)題顏色為止,圖表大小,背景顏色等。

但在新版本中繼續(xù)按照這樣的格式進(jìn)行創(chuàng)建時,編譯器報錯AttributeError: 'str' object has no attribute 'get',沒有這樣的對象。在新版文檔中對Geo是直接進(jìn)行創(chuàng)建的geo = Geo(),其實這樣創(chuàng)建基本也就可以了,但是如果你真的想對其進(jìn)行更多的參數(shù)設(shè)置,當(dāng)然也是可以的。

在新的庫中,對Geo的操作統(tǒng)一放在init_opts中,對其進(jìn)行更改需要統(tǒng)一的對類opts.InitOpts進(jìn)行修改,這里我們就需要引入from pyecharts import options as opts才能進(jìn)行調(diào)用。

具體的InitOpts包括以下一些參數(shù)

class InitOpts(BasicOpts):
 def __init__(
  self,
  width: str = "900px",
  height: str = "500px",
  chart_id: Optional[str] = None,
  renderer: str = RenderType.CANVAS,
  page_title: str = CurrentConfig.PAGE_TITLE,
  theme: str = ThemeType.WHITE,
  bg_color: Union[str, dict] = None,
  js_host: str = "",
  animation_opts: Union[AnimationOpts, dict] = AnimationOpts(),
 ):
  self.opts: dict = {
   "width": width,
   "height": height,
   "chart_id": chart_id,
   "renderer": renderer,
   "page_title": page_title,
   "theme": theme,
   "bg_color": bg_color,
   "js_host": js_host,
   "animationOpts": animation_opts,
  }

需要注意的是對opt.InitOpts直接進(jìn)行配置的話,只能對部分參數(shù)進(jìn)行更改,如bg_color等,而width,height等參數(shù)是固定的無法修改的,比如如果這樣設(shè)定

geo = Geo(init_opts = opts.InitOpts("aaa", width = 400, height = 200, bg_color = "#404a59"))

將報TypeError: init() got multiple values for argument 'width'多賦值的錯誤。好在新版本除了提供Opts 配置項作為參數(shù)傳入,還提供了原生 dict 作為參數(shù)配置,所有參數(shù)均可以自己任意定義,具體操作代碼是

geo = Geo(init_opts = {"width":1600,"chart_id":"ceshi","bg_color":"#404a59"})

這里發(fā)現(xiàn)了一個奇怪的現(xiàn)象,當(dāng)更改height參數(shù)時,將直接導(dǎo)致地圖標(biāo)注無圖像,至今未明白其中的原因。

2.add_schema設(shè)置

add_schema是Geo下的一個函數(shù),具體功能是對地圖的參數(shù)與功能進(jìn)行一些配置,主要包括有

def add_schema(
 # 地圖類型,具體參考 pyecharts.datasets.map_filenames.json 文件
 maptype: str = "china",
 
 # 是否開啟鼠標(biāo)縮放和平移漫游。
 is_roam: bool = True,
 
 # 當(dāng)前視角的縮放比例。默認(rèn)為 1
 zoom: Optional[Numeric] = None,
 
 # 當(dāng)前視角的中心點,用經(jīng)緯度表示。例如:center: [115.97, 29.71]
 center: Optional[Sequence] = None,
 
 # # 標(biāo)簽配置項,參考 `series_options.LabelOpts`
 label_opts: Union[opts.LabelOpts, dict, None] = None,
 
 # 地圖區(qū)域的多邊形 圖形樣式。
 itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] =None,
 
 # 高亮狀態(tài)下的多邊形樣式
 emphasis_itemstyle_opts: Union[opts.ItemStyleOpts, dict,None] = None,
 
 # 高亮狀態(tài)下的標(biāo)簽樣式。
 emphasis_label_opts: Union[opts.LabelOpts, dict, None] =None,
):

這里我只使用過maptype,zoom,label_opts的設(shè)置,具體設(shè)置如下

geo.add_schema(maptype = "china", zoom = 1, label_opts = opts.LabelOpts(is_show=True))

maptype可替換成世界地圖,省份地圖等,地圖資源可通過以下

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg

zoom是縮放設(shè)置,label_opts是標(biāo)簽設(shè)置,如同1中的設(shè)置,這里也是可以通過原生dict進(jìn)行自定義設(shè)置的。

3.add_coordinate設(shè)置:新增坐標(biāo)點

Geo中可以自己增加需要標(biāo)注的坐標(biāo)點,通過設(shè)置地點,經(jīng)度,緯度這三個參數(shù)即可完成添加。

def add_coordinate(
 # 坐標(biāo)地點名稱
 name: str,
 # 經(jīng)度
 longitude: Numeric,
 # 緯度
 latitude: Numeric,
)

這個函數(shù)和舊版是一致的,應(yīng)用也非常簡單,此處不再多加贅述,舉一個簡單的例子

geo.add_coordinate("標(biāo)注地點", 120, 80)

4.add設(shè)置:顯示與圖例篩選

這是Geo中最主要的函數(shù)模塊,可供設(shè)置的參數(shù)類型也比較多,新版的add函數(shù)結(jié)構(gòu)與以前相比也有較大的改動,相關(guān)的參數(shù)如下所示

def add(
 # 系列名稱,用于 tooltip 的顯示,legend 的圖例篩選。
 series_name: str,
 
 # 數(shù)據(jù)項 (坐標(biāo)點名稱,坐標(biāo)點值)
 data_pair: Sequence,
 
 # Geo 圖類型,有 scatter, effectScatter, heatmap, lines 4 種,建議使用
 # from pyecharts.globals import GeoType
 # GeoType.GeoType.EFFECT_SCATTER,GeoType.HEATMAP,GeoType.LINES
 type_: str = "scatter",
 
 # 是否選中圖例
 is_selected: bool = True,
 
 # 標(biāo)記圖形形狀
 symbol: Optional[str] = None,
 
 # 標(biāo)記的大小
 symbol_size: Numeric = 12,
 
 # 系列 label 顏色
 color: Optional[str] = None,
 
 # 是否是多段線,在畫 lines 圖情況下
 is_polyline: bool = False,
 
 # 是否啟用大規(guī)模線圖的優(yōu)化,在數(shù)據(jù)圖形特別多的時候(>=5k)可以開啟
 is_large: bool = False,
 
 # 特效尾跡的長度。取從 0 到 1 的值,數(shù)值越大尾跡越長。默認(rèn)值 0.2
 trail_length: Numeric = 0.2,
 
 # 開啟繪制優(yōu)化的閾值。
 large_threshold: Numeric = 2000,
 
 # 標(biāo)簽配置項,參考 `series_options.LabelOpts`
 label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
 
 # 漣漪特效配置項,參考 `series_options.EffectOpts`
 effect_opts: Union[opts.EffectOpts, dict] = opts.EffectOpts(),
 
 # 線樣式配置項,參考 `series_options.LineStyleOpts`
 linestyle_opts: Union[opts.LineStyleOpts, dict] = opts.LineStyleOpts(),
 
 # 提示框組件配置項,參考 `series_options.TooltipOpts`
 tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
 
 # 圖元樣式配置項,參考 `series_options.ItemStyleOpts`
 itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
)

其中,新舊版本最大的一個不同是,舊版的地點和值分開配置給attr和value,舊版的典型示例如下

from pyecharts import Geo
 
data = [
 ("海門", 9), ("鄂爾多斯", 12), ("招遠(yuǎn)", 12), ("舟山", 12), ("齊齊哈爾", 14), ("鹽城", 15)
]
geo = Geo(
 "全國主要城市空氣質(zhì)量",
 "data from pm2.5",
 title_color="#fff",
 title_pos="center",
 width=1200,
 height=600,
 background_color="#404a59",
)
attr, value = geo.cast(data)
geo.add("", attr, value, type="effectScatter", is_random=True, effect_scale=5)
geo.render()

而新版的add函數(shù)將地點和值放在了一個數(shù)據(jù)項里,

geo.add("", [attr, value], type_=ChartType.HEATMAP, symbol_size = 12, label_opts = opts.LabelOpts(is_show=False))

其他一些參數(shù)配置大致與以前是一致的,配置方式也可同樣參照1中的方式進(jìn)行。

在運行中發(fā)現(xiàn)一個有趣的問題,如一個個對坐標(biāo)進(jìn)行顯示插入

geo.add_coordinate("測試點1", 20, 40)
geo.add("haha1", [("測試點1", 60)])
geo.add_coordinate("測試點2", 60, 80)
geo.add("haha2", [("測試點2", 60)])

這樣運行是沒有問題的,但如果對列表中的項進(jìn)行批量的插入,如

for i in range(num):
 geo.add_coordinate(address[i], lng[i], lat[i])
 geo.add("", [(address[i],60)])

這樣做是會報錯的,具體原因不是太明白,無奈只能進(jìn)行如下修改

for i in range(num):
 geo.add_coordinate(address[i], lng[i], lat[i])
geo.add("", [(address[i],60) for i in range(num)])

做了這樣的修改后就沒有問題了,如果有知道原因的朋友可以留言給我,萬分感謝

還有一個值得注意的問題是,對中國地圖進(jìn)行標(biāo)注時,使用的地點不能包含“省”,“市”等,只能使用“江蘇”,“浙江”等地名,不然就是無效的。

最后想放一張自己運行生成的標(biāo)注地圖,無奈第一次標(biāo)記這邊的文章,不會添加圖片?。?!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • python實現(xiàn)Pyecharts實現(xiàn)動態(tài)地圖(Map、Geo)
  • Pyecharts 動態(tài)地圖 geo()和map()的安裝與用法詳解
  • 詳解用pyecharts Geo實現(xiàn)動態(tài)數(shù)據(jù)熱力圖城市找不到問題解決

標(biāo)簽:喀什 山西 濟(jì)南 海南 山西 崇左 長沙 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pyecharts 中Geo函數(shù)常用參數(shù)的用法說明》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266