1. 程式人生 > >Pyecharts 根據經緯度和量值的大小,畫出散點圖

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

      而今天我們主要介紹的是地圖+散點圖,地圖+熱力圖,應用到的函式是Geo,主要引數說明如下:

  1. attr:標籤名稱(在例子裡面就是地點)
  2. value:數值(在例子裡就是流動人員)
  3. visual_range:視覺化的數值範圍
  4. symbol_size:散點的大小
  5. visual_text_color:標籤顏色
  6. is_piecewise :顏色是否分段顯示(False為漸變,True為分段)
  7. is_visualmap:是否對映(數量與顏色深淺是否掛鉤)
  8. maptype :地圖型別,可以是中國地圖,省地圖,市地圖等等
  9. visual_split_number :視覺化數值分組
  10. geo_cities_coords:自定義的經緯度

更多引數請檢視:https://blog.csdn.net/weixin_41666051/article/details/83245595

      引數介紹完了,那麼我們進入主題。首先涉及到地圖,那麼肯定是得先有地圖是吧?所以呢需要地圖的朋友們一個個安裝吧!不然畫出來的圖只有散點,沒有地圖,或者出現地圖顯示不全等等問題。

$ 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

      然後就開始匯入資料,處理,可視化了,程式碼如下:

#載入pyecharts
from pyecharts import Geo,Style
import pandas as pd 
 
#匯入excel表舉例
df=pd.read_excel('流動人口.xlsx')     
df.head()
 
#匯入自定義的地點經緯度
geo_cities_coords={df.iloc[i]['地點']:[df.iloc[i]['經度'],df.iloc[i]['緯度']]
                    for i in range(len(df))} #根據檔案大小生成字典  
attr=list(df['地點'])   #字典的每個鍵值
value=list(df['流動人口']/100000)  #由於量值的太大,換算以下(散點的顏色就是和這個想關的)
style = Style(title_color= "#fff",title_pos = "center",
width = 1200,height = 600,background_color = "#404a59")
 
#視覺化
geo = Geo('東莞各個CGI總使用者數分佈',**style.init_style)
geo.add("",attr,value,visual_range=[0,100],symbol_size= 5,
        visual_text_color= "#fff",is_piecewise = True,
        is_visualmap= True,maptype = '東莞', visual_split_number= 10,
        geo_cities_coords=geo_cities_coords)
 
geo.render( '東莞各個CGI總使用者數分佈.html')

結果如下:

1

當is_piecewise = False:

2

當is_visualmap= False,顏色與點之間不再對映,也就是說每個點的流動人口數量與顏色深淺沒有任何關係:

當增加一個引數type = 'heatmap',就會得到熱力圖:

  1. style = Style(title_color= "#fff",title_pos = "center",
  2. width = 1200,height = 600,background_color = "#404a59")
  3. geo = Geo('東莞各個CGI總使用者數分佈',**style.init_style)
  4. geo.add("",attr,value,visual_range=[0,100],
  5. visual_text_color= "#fff",type = 'heatmap',
  6. is_visualmap= True,maptype = '東莞',
  7. geo_cities_coords=geo_cities_coords)
  8. geo.render( '東莞各個CGI總使用者數分佈.html')

ok,今天就先簡單介紹到這裡,以後會通過大量的專案來實踐說明。

自定義值範圍繪製地圖+散點圖

例如:

在這裡插入圖片描述

整個變數是df2,lan表示維度,lat是精度,要根據price做出散點圖,資料有3000多條,而price的每個顏色的範圍是自定的

style = Style(title_color= "#fff",title_pos = "center",width = 1200,height = 600,background_color = "#404a59")
geo_cities_coords={i:[df2.iloc[i]['lat'],df2.iloc[i]['lan']]
                    for i in range(len(df2))}
attr=[i for i in range(len(df2))]
values=list(df2['price'])
piece=[
      {'max': 1000,'label': '1000以下','color':'#50A3BA'},  #有上限無下限,label和color自定義
      {'min': 1000, 'max': 1800,'label': '1000-1800','color':'#81AE9F'},
      {'min': 1800, 'max': 2300,'label': '1800-2300','color':'#E2C568'},
      {'min': 2300, 'max': 2800,'label': '2300-2800','color':'#FCF84D'},
      {'min': 2800, 'max': 5000,'label': '2800-5000','color':'#E49A61'},
      {'min': 5000, 'max': 8000,'label': '5000-8000','color':'#DD675E'},
      {'min': 8000, 'label': '8000以上','color':'#D94E5D'}#有下限無上限
]
geo = Geo('上海房價分佈',**style.init_style)
geo.add("",attr=attr,value=values,symbol_size= 5,visual_text_color= "#fff",is_piecewise = True,
        is_visualmap= True,maptype = '上海', 
        pieces=piece,     #注意,要想pieces生效,必須is_piecewise = True,
        geo_cities_coords=geo_cities_coords)
geo.render( '上海房價分佈2.html')

結果

在這裡插入圖片描述