日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
可視化分析之Basemap實(shí)戰(zhàn)詳解

本文轉(zhuǎn)載自微信公眾號(hào)「Python技術(shù)」,作者派森醬 。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python技術(shù)公眾號(hào)。

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)阿巴嘎,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

上一篇文章講解了Basemap基礎(chǔ)知識(shí),今天的文章主要闡述 BaseMap 實(shí)戰(zhàn)。話不多說,一起來實(shí)戰(zhàn)吧!

BaseMap 畫世界地圖

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

BaseMap 畫地球地圖詳細(xì)代碼如下:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np

def drawcoast():
plt.figure(figsize=(12, 8))
m = Basemap() # 創(chuàng)建一個(gè)地圖
m.drawcoastlines() # 畫海岸線
plt.show() # 顯示圖像
if __name__ == '__main__':
drawcoast()

運(yùn)行結(jié)果圖如下:

??

用 BaseMap 畫中國地圖

使用 BaseMap 畫中國地圖時(shí)需要增加中國的經(jīng)緯度信息,詳細(xì)方法如下:

# 畫中國地圖
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 繪制人口分布圖

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

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 = -lat
lats.append(lat)
lon = float(info[3][:-1])
if info[3][-1] == 'W': lon = -lon + 360.0
lons.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 color
map.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 parameters
size_factor = 80.0
y_offset = 15.0
rotation = 30
for i, j, k, name in zip(x, y, pops, names):
size = size_factor * k / max_pop
cs = 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()

繪制出的地球圖片如下:

??

畫投影地球

最后來畫一個(gè)有投影的地球,詳細(xì)代碼如下:

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

if __name__ == '__main__':
draw_earth1()

繪畫結(jié)果圖如下:

??

總結(jié)

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


分享名稱:可視化分析之Basemap實(shí)戰(zhàn)詳解
文章位置:http://www.dlmjj.cn/article/djdoipd.html