天天看點

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

本文主要内容:

1、如何解決坐标點缺失;

2、如何自定義坐标點;

3、如何實作“科研戰‘疫’中各高校的表現”的可視化展示;

4、不足之處;

5、自動在浏覽器打開結果

效果展示:

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

指定經緯度的意義:

echarts裡面有的地點可能沒有,造成坐标點缺失。如果我們的資料中含有這樣的坐标點,則在相應位置無法顯示資訊,造成運作錯誤或生成空圖。指定經緯度就是自行打點的過程,可以根據經緯度在任何位置添加我們需要的坐标地理點。

解決坐标點缺失的四個解決辦法:

1. 把不存在的點删掉。

最簡單的方法:但是這很多時候會影響資料的完整性;

2. 利用百度地圖API修改包資料

把找不到的地方的經緯度加進原始的包裡(具體可以參看部落格用pyecharts Geo實作動态資料熱力圖 城市找不到問題解決)

3.用geo_cities_coords 添加自定義坐标點

...
city=["city1","city2"]
value = [["value1","value2"],["value3"]]
geo_cities_coords = {"city1":[100,30],"city1":[130,40]}  #[100,30]中100為緯度,30為經度
...
geo.add("",city,value, 
		geo_cities_coords=geo_cities_coords)
...
           

4.try…except…去除批量資料的異常

如果是批量導入資料,異常資料并不想插入到地圖中去,可以通過try…except…來清除這少部分的異常資料

當然如果資料量比較大的話,這樣做效率可能不高

for n, m in data.items():   #data是我從資料庫中讀取的城市的字典資料
    citys = []
    values = []
    citys.append(n)
    values.append(m)
    try:
        geo.add("",
        citys, values,
        ...)
    except Exception as e:
        pass
           

項目——科研戰“疫”中各高校的表現

導庫、讀取資料

import pandas as pd
from pyecharts import Geo

df=pd.read_excel('C:/Users/Administrator/Desktop/Sci_data.xlsx',#讀取xlsx檔案位置
                 sheet_name='Sci_data',#讀取檔案中指定sheet表
                 names=['University_name','Sci_research','Longitude','Latitude'])#列出标題行資訊
           

Excel表格資訊

(這裡Geo()一般用于數值展示,我這裡希望讓其展示文本資訊,效果不是很好)

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

坐标點自定義、讀取表格資訊

#導入自定義的地點經緯度
geo_cities_coords={df.iloc[i]['University_name']:[df.iloc[i]['Latitude'],df.iloc[i]['Longitude']]
                    for i in range(len(df))} #根據檔案大小生成經緯度字典  

#讀取大學名稱和科研成果清單
University_name=list(df['University_name'])
Sci_research=list(df['Sci_research'])

#讀取資料條數
total=df.shape[0]
           

運作程式的讀取結果

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

定義Geo()

geo = Geo(
        "科研戰“疫”中各高校的表現", #大标題
        "(截至2020年3月1日,高校數:"+str(total)+"所)",#副标題,并顯示高校數
        title_top=25, #标題距離頂部距離。标題距離頂部距離,預設為'top',有'top', 'middle', 'bottom'可選,也可為百分比或整數
        title_pos="center",#标題位置。預設為'left',有'auto', 'left', 'right', 'center'可選,也可為百分比或整數
        title_color="#fff",#标題顔色
        subtitle_color='#aaa',#副标題文本顔色,預設為 '#aaa'
        title_text_size=24, #标題大小
        subtitle_text_size=12,#副标題文本字型大小,預設為 12
        width=1000, height=800, #繪圖區域大小
        background_color='#404a59', #背景顔色
        page_title="科研戰“疫”中各高校的表現"#指定生成的 html 檔案中 <title> 标簽的值。預設為'Echarts'
        ) 
           

定義geo.add()

geo.add("", # 系列名稱,用于 tooltip 的顯示,legend 的圖例篩選。
        University_name,Sci_research, # 坐标點名稱,資料資訊(這裡資料資訊通常是數值)
        maptype="china",  #str,地圖類型,具體參考 
        geo_cities_coords=geo_cities_coords,#引入自定義坐标點
        symbol_size=8,#散點大小
        visual_text_color= "#fff",
        is_label_show=False,  #是否正常顯示标簽,預設不顯示。這裡标簽顯示的是經度
        )
geo.render('C:/Users/Administrator/Desktop/科研戰“疫”中各高校的表現.html')
           

效果展示

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

不足之處。強迫症患者嚴重影響心情。

1、标簽展示(如下圖):這裡我沒有進行标簽的預設展示,因為展示資訊為“經度”,我希望它展示位高校名稱,查了官方文檔和别人的案例沒有查到解決方案。

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

2、經緯度資訊預設展示:我希望不展示經緯度資訊,同樣沒有查到解決方案。

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

3、文本資料展示:文本隻能單行顯示,内容過多時不友善展示,文本溢出。

pyecharts Geo根據指定經緯度資訊實作“科研戰‘疫’中各高校的表現”的可視化展示

自動在浏覽器打開結果

import webbrowser

webbrowser.open_new_tab(result)
           

參考案例及部落格:

pyecharts詳細配置繪制圖表

pyecharts 标記指定經緯度

Pyecharts 根據經緯度和量值的大小,畫出散點圖