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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

神器-可视化分析之Basemap实战详解(二)

發布時間:2023/12/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神器-可视化分析之Basemap实战详解(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文 |?潮汐

來源:Python 技術「ID: pythonall」

上一篇文章講解了Basemap基礎知識,今天的文章主要闡述 BaseMap 實戰。話不多說,一起來實戰吧!

BaseMap 畫世界地圖

BaseMap 畫世界地圖,主要方法是畫地球海岸線,畫國家分界線主要方法是:m.drawcoastlines()

BaseMap 畫地球地圖詳細代碼如下:

import?matplotlib.pyplot?as?plt from?mpl_toolkits.basemap?import?Basemap import?numpy?as?npdef?drawcoast():plt.figure(figsize=(12,?8))m?=?Basemap()???#?創建一個地圖m.drawcoastlines()???#?畫海岸線plt.show()???#?顯示圖像 if?__name__?==?'__main__':drawcoast()

運行結果圖如下:

用 BaseMap 畫中國地圖

使用 BaseMap 畫中國地圖時需要增加中國的經緯度信息,詳細方法如下:

#?畫中國地圖 def?draw_china():plt.figure(figsize=(10,?6))m?=?Basemap(llcrnrlon=77,?llcrnrlat=14,?urcrnrlon=140,?urcrnrlat=51,?projection='lcc',?lat_1=33,?lat_2=45,lon_0=100)m.drawcountries(linewidth=1.5)m.drawcoastlines()plt.show()

中國地圖顯示如下:

用 BaseMap 繪制地球

def?draw_basic():map?=?Basemap(projection='ortho',?lat_0=0,?lon_0=0)map.drawmapboundary(fill_color='aqua')map.fillcontinents(color='gray',lake_color='aqua')map.drawcoastlines()plt.show()

顯示圖片如下:

用 BaseMap 繪制人口分布圖

根據添加的各個城市的主要人口分布后繪制出城市人口分布地圖,詳細方法和代碼如下:

def?drawearth():names?=?[]pops?=?[]lats?=?[]lons?=?[]countries?=?[]file?=?open("data/main_city",?encoding='utf-8').readlines()for?line?in?file:info?=?line.split()names.append(info[0])pops.append(float(info[1]))lat?=?float(info[2][:-1])if?info[2][-1]?==?'S':?lat?=?-latlats.append(lat)lon?=?float(info[3][:-1])if?info[3][-1]?==?'W':?lon?=?-lon?+?360.0lons.append(lon)country?=?info[4]countries.append(country)#?set?up?map?projection?with#?use?low?resolution?coastlines.map?=?Basemap(projection='ortho',?lat_0=35,?lon_0=120,?resolution='l')#?draw?coastlines,?country?boundaries,?fill?continents.map.drawcoastlines(linewidth=0.25)map.drawcountries(linewidth=0.25)#?draw?the?edge?of?the?map?projection?region?(the?projection?limb)map.drawmapboundary(fill_color='#689CD2')#?draw?lat/lon?grid?lines?every?30?degrees.map.drawmeridians(np.arange(0,?360,?30))map.drawparallels(np.arange(-90,?90,?30))#?Fill?continent?wit?a?different?colormap.fillcontinents(color='#BF9E30',?lake_color='#689CD2',?zorder=0)#?compute?native?map?projection?coordinates?of?lat/lon?grid.x,?y?=?map(lons,?lats)max_pop?=?max(pops)#?Plot?each?city?in?a?loop.#?Set?some?parameterssize_factor?=?80.0y_offset?=?15.0rotation?=?30for?i,?j,?k,?name?in?zip(x,?y,?pops,?names):size?=?size_factor?*?k?/?max_popcs?=?map.scatter(i,?j,?s=size,?marker='o',?color='#FF5600')plt.text(i,?j?+?y_offset,?name,?rotation=rotation,?fontsize=10)plt.title('earth')plt.show()if?__name__?==?'__main__':drawearth()

繪制出的地球圖片如下:

畫投影地球

最后來畫一個有投影的地球,詳細代碼如下:

def?draw_earth1():import?matplotlib.pyplot?as?pltfrom?mpl_toolkits.basemap?import?Basemapplt.figure(figsize=(8,?8))#?正射投影,投影原點設在了上海周邊m?=?Basemap(projection='ortho',?resolution=None,?lat_0=30,?lon_0=120)#?圖像原始分辨率是5400*2700,設置scale?=?0.5以后分辨率為2700*1350,如此作圖#?迅速不少也不那么占用內存了m.bluemarble(scale=0.5)plt.show()if?__name__?==?'__main__':draw_earth1()

繪畫結果圖如下:

總結

今天的文章就到這里啦,希望今天的文章對大家有幫助!

PS:公號內回復「Python」即可進入Python 新手學習交流群,一起 100 天計劃!

老規矩,兄弟們還記得么,右下角的 “在看” 點一下,如果感覺文章內容不錯的話,記得分享朋友圈讓更多的人知道!

代碼獲取方式

識別文末二維碼,回復:潮汐

總結

以上是生活随笔為你收集整理的神器-可视化分析之Basemap实战详解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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