Pyecharts 根據經緯度和量值的大小,畫出散點圖
阿新 • • 發佈:2018-12-16
而今天我們主要介紹的是地圖+散點圖,地圖+熱力圖,應用到的函式是Geo,主要引數說明如下:
- attr:標籤名稱(在例子裡面就是地點)
- value:數值(在例子裡就是流動人員)
- visual_range:視覺化的數值範圍
- symbol_size:散點的大小
- visual_text_color:標籤顏色
- is_piecewise :顏色是否分段顯示(False為漸變,True為分段)
- is_visualmap:是否對映(數量與顏色深淺是否掛鉤)
- maptype :地圖型別,可以是中國地圖,省地圖,市地圖等等
- visual_split_number :視覺化數值分組
- 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')
結果如下:
當is_piecewise = False:
當is_visualmap= False,顏色與點之間不再對映,也就是說每個點的流動人口數量與顏色深淺沒有任何關係:
當增加一個引數type = 'heatmap',就會得到熱力圖:
- 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],
- visual_text_color= "#fff",type = 'heatmap',
- is_visualmap= True,maptype = '東莞',
- geo_cities_coords=geo_cities_coords)
- 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')
結果