日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pyecharts中Map和Geo的使用笔记

發布時間:2024/3/24 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pyecharts中Map和Geo的使用笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. Geo/Map中如何自定義(增加/修改)經緯度坐標?
          • 相關文檔:
          • 本地源文件
            • 1. pyecharts 自帶的datasets(json)
            • 2. 額外安裝的地圖文件包
          • ?依賴情況
          • 如果輸入了不存在的地點名稱會發生什么?
            • Geo中的解決方案:
            • Map中的解決方案:
            • 其他問題
    • 2. Geo/Map中地圖上圓點上方數值顯示的是經緯度數值,能否顯示地圖坐標名稱和數值?
        • Map
        • Geo
          • 回調函數方法顯示標簽
      • 更多擴展:#TODO

我使用的Pyecharts 版本:v 0.5.11
官方文檔: https://05x-docs.pyecharts.org/#/

1. Geo/Map中如何自定義(增加/修改)經緯度坐標?

相關文檔:
  • 自定義地圖:https://05x-docs.pyecharts.org/#/zh-cn/customize_map?id=version-057
  • 地理地圖數據:https://05x-docs.pyecharts.org/#/zh-cn/datasets?id=提供自定義數據
  • 提供自定義數據:https://github.com/pyecharts/geo-region-coords
本地源文件
1. pyecharts 自帶的datasets(json)


數據格式如下:

2. 額外安裝的地圖文件包

自從 v0.3.2 開始, pyecharts 將不再自帶地圖 js 文件。如需要用到地圖圖表,需自行安裝對應的地圖文件包。

在本地的位置:

例如我的在:C:UsersadminAnaconda3Libsite-packagesecharts_china_cities_pypkg

數據格式如下:

依賴情況

據我的研究,Geo依賴的是 1. pyecharts 自帶的datasets(city_coordinates.json);Map依賴的是 2. 額外安裝的地圖文件包。(如果不對請指正,感謝~)

如果輸入了不存在的地點名稱會發生什么?
  • 在Geo中:會報錯。例如:

    from pyecharts import Geo

    districts=[‘白云區’, ‘從化區’, ‘番禺1111區’, ]
    value = [1, 2, 3,]

    geo = Geo(“Geo地圖示例”, “”,title_pos=‘center’, width=1000, height=1000)
    geo.add("",
    districts, value, maptype=‘廣州’,
    is_visualmap=True,
    is_label_show=True ,
    visual_range=[min(value), max(value)],
    )
    geo.render()
    geo

  • 地圖文件中不存在 “番禺1111區”,程序報錯:

    這時候,

    Geo中的解決方案:
  • 可以在源文件中直接修改或添加經緯度坐標位置;

  • Geo中有add_coordinate()方法,例如:

    from pyecharts import Geo

    districts=[‘白云區’, ‘從化區’, ‘番禺區’, ‘海珠區’, ‘花都區’, ‘黃埔區’, ‘荔灣區’, ‘南沙區’, ‘天河區’, ‘越秀區’, ‘增城區’]

    value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]

    geo = Geo(“Geo地圖示例”, “”,title_pos=‘center’, width=1000, height=1000)
    geo.add_coordinate(‘南沙區’, 113.525165,22.801624)
    geo.add_coordinate(‘白云區’, 113.273238,23.3)
    geo.add("",
    districts, value, maptype=‘廣州’,
    is_visualmap=True,
    is_label_show=True ,
    visual_range=[min(value), max(value)],
    label_formatter=’{b}’
    )
    geo

  • 注意點:

    • 如果 geo.add_coordinate 添加的地點在源文件中已經存在,則自定義添加的會覆蓋源文件中的;

    • 注意在 v0.5.11版本中,我估計是不完整或者舊版本的廣州地圖,沒有“白云區”、“南沙區”,增城還是“增城市”而不是“增城區”,所以要手動修改。(Map中也有類似現象)

    • 有些地點在地圖上可能過于“擁擠”(例如廣州地圖的荔灣區,白云區,天河區,海珠區),也可以通過手動修改經緯度坐標來進行調整。(Map中也有類似現象)

    • 記錄一下我對廣州市11個區的經緯度坐標的調整:

      geo =Geo(“廣州市地圖”)
      geo.add_coordinate(‘白云區’, 113.273238,23.3)
      geo.add_coordinate(‘越秀區’, 113.266835,23.128537)
      geo.add_coordinate(‘海珠區’, 113.361575,23.08)
      geo.add_coordinate(‘天河區’, 113.361575,23.20)
      geo.add_coordinate(‘番禺區’, 113.384152,22.937556)
      geo.add_coordinate(‘黃埔區’, 113.550541,23.24)
      geo.add_coordinate(‘南沙區’, 113.525165,22.801624)
      geo.add_coordinate(‘花都區’, 113.220463,23.403744)
      geo.add_coordinate(‘從化區’, 113.586679,23.548748)
      geo.add_coordinate(‘增城區’, 113.810627,23.261465)
      geo.add_coordinate(‘荔灣區’, 113.23,23.05)
      geo.add(’’, districts, value, maptype=‘廣州’)

  • 在Map中:不會報錯,但該地點無法顯示,例如:

    from pyecharts import Map

    districts=[‘白云區’, ‘從化區’, ‘番禺11111區’]
    value = [ 1, 2, 3,]

    map = Map(“Map地圖示例”, “”, title_pos=‘center’, width=1000, height=1000)
    map.add("",
    districts, value, maptype=‘廣州’,
    is_visualmap=True,
    visual_range=[min(value), max(value)],
    is_label_show=True ,
    label_formatter=’{b}’+’{c}’,
    )
    map.render()
    map

  • 輸出結果如下,‘番禺11111區’ 沒有顯示:

    Map中的解決方案:
  • 在源文件中直接修改或添加經緯度坐標位置;
  • 注意點:

    • 我發現了一個奇怪的現象:我在 2. 額外安裝的地圖文件包 的源文件中對廣州市11個區的經緯度坐標進行了調整,在 jupyter notebook 中輸出的圖沒有變化(還是擠在一起),如下:
    • 但是map.render() 出來的html文件里顯示的卻是調整過后的,如下:
    其他問題


    (來自 https://github.com/pyecharts/pyecharts/issues/164 )

    對于1:我嘗試之后發現好像還是可以縮放欸。?
    對于2. Map不能自定義經緯度,沒辦法,那就只能去源文件里手動修改啦

    2. Geo/Map中地圖上圓點上方數值顯示的是經緯度數值,能否顯示地圖坐標名稱和數值?

    (https://github.com/pyecharts/pyecharts/issues/817 中有相關的討論)

    答案是可以的,利用回調函數設置.add()中的label_formatter屬性即可。

    回調函數:我自己的理解是,echarts 本身是 javascript,pyecharts 中的回調函數就是將 python 方法翻譯為 javascript 方法的函數(如果不對,還請大神指正~)

    Map

    先看Map中的情況:
    運行如下代碼,默認顯示只顯示類目值

    from pyecharts import Mapdistricts=['白云區', '從化區', '番禺區', '海珠區', '花都區', '黃埔區', '荔灣區', '南沙區', '天河區', '越秀區', '增城區'] value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]map = Map("Map地圖示例", "",title_pos='center', width=1000, height=1000) map.add("", districts, value,maptype='廣州', is_visualmap=True, visual_range=[min(value), max(value)],is_label_show=True , ) map.render() map

    輸出結果部分截圖如下:

    添加參數label_formatter可以進行設置(中間還可以用“+”連接):

    (來自于文檔 基本使用->圖標配置->通用配置項->label https://05x-docs.pyecharts.org/#/zh-cn/charts_configure?id=label)

    例如label_formatter='{b}'+'{c}',則類目值和數值可以一起顯示了:

    from pyecharts import Mapdistricts=['白云區', '從化區', '番禺區', '海珠區', '花都區', '黃埔區', '荔灣區', '南沙區', '天河區', '越秀區', '增城區'] value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]map = Map("Map地圖示例", "",title_pos='center', width=1000, height=1000) map.add("",districts, value,maptype='廣州', is_visualmap=True, visual_range=[min(value), max(value)],is_label_show=True , label_formatter='{b}'+'{c}',) map.render() map

    運行結果如下:

    Geo

    再來看Geo中的情況。和Map有所不同,默認的顯示的是緯度值

    from pyecharts import Geodistricts=['白云區', '從化區', '番禺區', '海珠區', '花都區', '黃埔區', '荔灣區', '南沙區', '天河區', '越秀區', '增城區'] value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]geo = Geo("Geo地圖示例", "",title_pos='center', width=1000, height=1000) geo.add_coordinate('南沙區',113.525165,22.801624) geo.add_coordinate('白云區', 113.273238,23.3) geo.add("", districts, value,maptype='廣州', is_visualmap=True, is_label_show=True , visual_range=[min(value), max(value)],#label_formatter='{b}'+'{c}') geo.render() geo


    設置 label_formatter='{b}'+'{c}'之后會把類目值+經度+緯度+數值一起顯示出來:

    回調函數方法顯示標簽

    這時候就要用到回調函數了。操作如下:
    先定義一個geo_formatter函數:

    def geo_formatter(params):return params.name + ' : ' + params.value[2]

    然后再設置label_formatter=geo_formatter即可:

    from pyecharts import Geodef geo_formatter(params):return params.name + ' : '+ params.value[2]districts=['白云區', '從化區', '番禺區', '海珠區', '花都區', '黃埔區', '荔灣區', '南沙區', '天河區', '越秀區', '增城區'] value = [ 1, 2, 3,4, 5,6,7,8,9,10, 11]geo = Geo("Geo地圖示例", "",title_pos='center', width=1000, height=1000) geo.add_coordinate('南沙區',113.525165,22.801624) geo.add_coordinate('白云區', 113.273238,23.3) geo.add("", districts, value,maptype='廣州', is_visualmap=True, is_label_show=True , visual_range=[min(value), max(value)],#label_formatter='{b}'+'{c}'label_formatter=geo_formatter, # 重點在這里,將函數直接傳遞為參數。) geo.render() geo

    輸出結果如下:

    上述 format 的設置方式同樣適用于:xaxis_formatter(x 軸標簽格式器),yaxis_formatter (y 軸標簽格式器),label_formatter(文本標簽格式器) ,tooltip_formatter(提示框標簽格式器)

    更多擴展:#TODO

    回調函數只能顯示value值,name值等,那能不能顯示針對每個城市的自定義的數值呢?(https://github.com/pyecharts/pyecharts/issues/1039)

    (更新中…)

    總結

    以上是生活随笔為你收集整理的Pyecharts中Map和Geo的使用笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。