溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python高考報考遷移圖怎么實現

發布時間:2021-11-25 14:37:37 來源:億速云 閱讀:225 作者:iii 欄目:大數據

本篇內容介紹了“Python高考報考遷移圖怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

第一步:整理數據

通過瀏覽器自帶抓包工具得到數據接口:

https://voice.baidu.com/api/commonkvapi?aid=gaokao&data={"migration.list":{"descId":6}}&=

返回的為json格式數據

Python高考報考遷移圖怎么實現

接下來我們需要用python模擬爬取數據,原數據如上圖,最后要把數據整理成字典格式,字典的鍵為省份,字典的值為該省考生最想去的前十個省份,格式如下:

{'青海': ['青海', '北京', '陜西', '江蘇', '四川', '湖北', '上海', '甘肅', '山東', '重慶']}

實現這一過程的python代碼如下:

import requests
import json
url='https://voice.baidu.com/api/commonkvapi?aid=gaokao&data={"migration.list":{"descId":6}}&='
header = {
    'User-Agent': 'Mozilla/5.0(Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'
}
response = requests.get(url, headers=header)
results=json.loads(response.text)['data']['migration.list']
dict={}
for i in results:
    top_10=[]
    province=i['province']
    for m in i['list'][2]['list'][:10]:
       top_10.append(m['name'])
    dict[province]=top_10
print(dict)

第二步:用pyecharts畫出遷徙圖

本次用的是0.5.11版本的pyecharts

畫遷徙圖的公式為:

from pyecharts import GeoLines, Style
style = Style()
geo_style = style.add()
citylines = GeoLines("2020年全國高考報考遷徙圖", **style.init_style)
citylines.add("遷徙圖",[('北京','海南'),('北京','黑龍江'),('北京','西藏')],**geo_style)
citylines.render()

把上面這段代碼記住,以后需要畫遷徙圖直接往里面套就行了,下面給大家詳細介紹一下參數作用:

1.style是圖表初始化配置,例如圖像大小、背景顏色、標題位置等;

2.style的add參數介紹:

is stack:是否堆積
is convert:x,y軸是否交換
is_legend_show:是否顯示圖例
legend_orient:圖列方向,有'horizontal'(默認水平顯示),'vertical'(垂直)可選
legend_pos:圖例位置,有'left', 'center'(默認), 'right'可選
legend_text_size/color:圖例名稱字體大小/顏色
is_x/yaxis_show:是否顯示x/y軸
x/yaxis_interval:x/y軸標簽的顯示間隔
x/yaxis_min/max:x/y軸刻度最小值/最大值
x/yaxis_label_textsize/textcolor:x/y軸標簽字體大小/顏色
xaxis_rotate:x軸標簽旋轉角度
is_splitline_show:是否顯示網格線
is_label_show:是否顯示標簽
label_pos:標簽的位置,有'top'(默認), 'left', 'right', 'bottom','inside','outside'可選
label_text_color/size:標簽字體顏色/大小
is_random:是否隨機排列顏色列表
label_color:自定義標簽顏色
mark_point/line:標記點/線,默認有'min', 'max', 'average'可選??勺远x標記點線,具體格式如:[{'coord': [x, y], 'name': '目標標記點'}],記住格式是一個列表
mark_point/line_symbol:標記點/線圖形,默認為'pin'(點),有'circle'(圓形), 'rect'(正方形), 'roundRect'(圓角正方形), 'triangle'(三角形), 'diamond'(菱形), 'pin'(點), 'arrow'(箭頭)可選
mark_point/line_symbolsize:標記點/線圖形大小
mark_point/line_textcolor:標記點/線字體顏色

3.citylines表示定義1個遷徙圖對象,可以添加標題以及初始化圖標樣式;

4.citylines.add可以添加標簽、路線圖以及圖形樣式

公式代碼生成圖形如下:

Python高考報考遷移圖怎么實現

很基礎的圖形,沒有任何樣式。

套上述公式完成本次遷徙圖,代碼如下:

from pyecharts import GeoLines, Style
style = Style(
    title_color="#fff",
    title_pos="center",
    width=1200,
    height=900,
    background_color="#08192D")
geo_style = style.add(
    legend_orient="vertical",
    legend_pos="left",
    legend_top = "center",
    legend_text_color="#fff",
    is_label_show=True,
    line_curve=0.2,
    line_opacity=0.6,
    geo_effect_symbol="plane",
    geo_effect_symbolsize=8,
    label_pos="right",
    label_formatter="",
    label_text_color="#eee",
    symbol_size = 0.2,
    label_text_size=8,
    label_color=['#24936E','#6A4C9C','#0089A7','#BEC23F','#D0104C'])
citylines = GeoLines("2020年全國高考報考遷徙圖", **style.init_style)
for city in list(dict.keys()):
    line_=[]
    for i in dict[city]:
        line_.append(tuple((city,i)))
    citylines.add("{0}".format(city),line_,**geo_style)
citylines.render()

看起來有點亂,不過可以通過點擊左邊標簽選擇顯示單個省份,以河南為例:

Python高考報考遷移圖怎么實現

通過分析,發現各地的考生想留在本省的居多,最后,我還想對這些遷徙圖的目的地省市的出現次數進行排名,代碼如下:

re_list=[]
for city in list(dict.keys()):
    re_list+=dict[city]
re_dict={}
for i in list(set(re_list)):
    re_dict[i]=re_list.count(i)
attr=sorted(re_dict.items(),key=lambda k:k[1],reverse=True)
chart = Bar("最受喜愛省份排名", **style.init_style)
chart.add("", [i[0] for i in attr], [i[1] for i in attr], is_stack=True,xaxis_rotate=45)
chart.render('最受喜愛省份排名.html')

“Python高考報考遷移圖怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女