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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

可视化:中国地图 python/ geopandas/ echarts

發布時間:2025/3/12 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可视化:中国地图 python/ geopandas/ echarts 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(區塊鏈現在也成了“牛夫人”)

前言

地圖,在可視化中總是引人注目的。之前我們介紹了如何用R語言中的ggplot2畫中國地圖。本篇我們在python中搞定地圖,主要結合我在BMW豐富的畫地圖經歷總結一下,到lync很久沒用python工作了,手生。主要介紹兩種常用方法:

  • 用geopandas畫中國地圖

  • 用pyecharts畫中國地圖

整體流程

首先,獲取地理文件信息,可以從國家地理中心(webmap.cn)下載,有各個省、市的。公眾號后臺回復“地圖”,可以獲取原數據與源碼。https://github.com/hongyingyue/Tiny-skills-of-data。

  • 準備數據(包括地理目標數據和地理輔助數據)
  • 畫地圖作為背景
  • 畫目標數據

geopandas

geopandas的步驟其實和R很像
準備數據

采用和上一篇中同樣的數據進行演示,目標是畫出各個城市的銷量。表一,城市名(City)與城市屬性(Total Year)的關系:

另一個需要的數據,城市的地理屬性。表二,城市(City)與地理位置(經度、緯度)的關系:

程序的第一步便是讀取以上數據:

data = pd.read_csv("../../data/map_R_province.csv") data_agg = data.groupby(['City'])[['City']].size().reset_index(name='size') city_name_map = pd.read_csv(open("../../assets/city_geocode_lookup.csv", encoding='gbk')) data_agg = data_agg.merge(city_name_map, left_on='City', right_on='City', how='left') geo_data_agg = gp.GeoDataFrame(data_agg, geometry=gp.points_from_xy(data_agg.Lon, data_agg.Lat)) print(geo_data_agg)

有了城市的位置,也有了城市的屬性之后,在位置上畫出屬性的性質。畫地圖和目標:

def geo_china(df, size_column='size', title='map'):china_geod = gp.GeoDataFrame.from_file("../../assets/province.shp", encoding='gb18030')print(china_geod.head(5), china_geod.columns)ax = china_geod.plot(color='white', edgecolor='black')df.plot(ax=ax, color='red', markersize=df[size_column], alpha=0.5)#df.plot(ax=ax, column=size_column, cmap='Blues', linewidth=0.8, edgecolor='0.8')ax.set_axis_off()plt.show()

這里需要注意的是,雖然地理文件只讀取了shp文件,但三個文件缺一不可,而且要放在同一路徑下。效果如下:

pyecharts

上面的圖并沒有進行美化,所以看著和ggplot的美感還有差距。放心,python里還有一招,就是直接調用前端常用的包pyecharts來完成地圖的制作,能夠達到簡化操作就畫出漂亮的交互地圖效果。

# https://github.com/pyecharts/pyecharts # you should have Internet connect from pyecharts.charts import Map,Geo from pyecharts import options as optsprovince_dict = {'河南': 45.23, '北京': 37.56, '河北': 21, '遼寧': 12, '江西': 6, '上海': 20, '安徽': 10, '江蘇': 16, '湖南': 9,'浙江': 13, '海南': 2, '廣東': 22, '湖北': 8, '黑龍江': 11, '澳門': 1, '陜西': 11, '四川': 7,'內蒙古': 3, '重慶': 3, '云南': 6, '貴州': 2, '吉林': 3, '山西': 12, '山東': 11, '福建': 4, '青海': 1,'天津': 1, '其他': 1}province_char = [[item[0],item[1]] for item in province_dict.items()] print(province_char)map = Map(init_opts=opts.InitOpts(width='1200px', height='800px')) map.set_global_opts(title_opts=opts.TitleOpts(title="2019年"),visualmap_opts=opts.VisualMapOpts(max_=50)) map.add("China Map Example", data_pair=province_char, maptype='china', is_roam=True) map.render(path="中國地圖.html")

效果還是非常驚艷的,將生成的html在chrome里打開后,可以帶交互效果,并自帶了九段線,畢竟是國內bidu出品。輸入數據也可以從csv由pandas讀入,然后轉化為字典形式,不過注意各省名字保持規范。缺點就是必須聯網才能畫出來,需要官方服務器傳回數據。

聯系方式

公眾號YueTan

總結

以上是生活随笔為你收集整理的可视化:中国地图 python/ geopandas/ echarts的全部內容,希望文章能夠幫你解決所遇到的問題。

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