神器-可视化分析之Basemap实战详解(二)
生活随笔
收集整理的這篇文章主要介紹了
神器-可视化分析之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实战详解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李晨 | 无人机市场浅析
- 下一篇: 使用httpclient进行文件下载