额外篇 | basemap(下)

额外篇 ,不需要看,是我不知道放哪个栏目,就放在这该专栏了。

使用basemap是为了如何绘制数据,而不是简单看下图片

以下是一些可用的绘图功能

物理边界和水体

  • DrawCoastlines():绘制大陆海岸线

  • drawlsmask():在陆地和海洋之间绘制一个遮罩,用于一个或另一个上的投影图像。

  • drawMapBoundary():绘制地图边界,包括海洋的填充颜色。

  • draw rivers():在地图上绘制河流

  • fillContinents():用给定颜色填充大陆;可以选择用另一种颜色填充湖泊

政治界限

  • drawCountries():绘制国家边界

  • drawStates():绘制我们的状态边界

  • drawCountries():绘制美国县边界

地图功能

  • drawGreatCircle():在两点之间画一个大圆

  • drawParallels():绘制等纬度线

  • drawMeridians():绘制经度不变的线

  • draw map scale():在地图上绘制线性比例

全球图像

  • blue marble():将NASA的蓝色大理石图像投影到地图上

  • shaddedRelief():将着色的浮雕图像投影到地图上

  • etopo():在地图上绘制etopo浮雕图像

  • warpImage():将用户提供的图像投影到地图上

对于基于边界的要素,在创建基础地图图像时必须设置所需的分辨率。
“basemap”类的“resolution”参数设置边界的详细程度,如果不使用边界,可以是“c”(粗)、“l”(低)、“i”(中)、“h”(高)、“f”(满)或“none”(无)。

将创建苏格兰美丽的斯凯岛的低分辨率和高分辨率地图

苏格兰位于57.3°N,6.2°W,使用90000×120000公里的地图

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
fig, ax = plt.subplots(1, 2, figsize=(12, 8))

for i, res in enumerate(['l', 'h']):
    m = Basemap(projection='gnom', lat_0=57.3, lon_0=-6.2,
                width=90000, height=120000, resolution=res, ax=ax[i])
    m.fillcontinents(color="#FFDDCC", lake_color='#DDEEFF')
    m.drawmapboundary(fill_color="#DDEEFF")
    m.drawcoastlines()
    ax[i].set_title("resolution='{0}'".format(res))

在这里插入图片描述
在地图上绘制数据

使用“basemap”实例将纬度和经度坐标投影到“x,y”坐标

其中一些特定于地图的方法是:

  • Contour()`/ Contourf()``:绘制轮廓线或填充轮廓
  • imshow():绘制图像
  • pcolor()`/pcolormesh()``:为不规则/规则网格绘制伪彩色图
  • plot():绘制线条和/或标记。
  • scatter():使用标记绘制点。
  • quiver():绘制向量。
  • barbs():绘制风倒钩。
  • drawGreatCircle():画一个大圆。

有关这些函数(包括几个示例图)的详细信息,请参阅[在线文档](http://matplotlib.org/basemap/)。

读入数据来画图

import pandas as pd
cities = pd.read_csv('data/california_cities.csv')
cities.columns


Index(['Unnamed: 0', 'city', 'latd', 'longd', 'elevation_m', 'elevation_ft',
       'population_total', 'area_total_sq_mi', 'area_land_sq_mi',
       'area_water_sq_mi', 'area_total_km2', 'area_land_km2', 'area_water_km2',
       'area_water_percent'],
      dtype='object')
cities.head()

在这里插入图片描述
绘制加利福尼亚城市位置、大小和人口的信息。

# Extract the data we're interested in
lat = cities['latd'].values
lon = cities['longd'].values
population = cities['population_total'].values
area = cities['area_total_km2'].values

设置地图投影,分散数据,然后创建颜色条和图例

# 1. Draw the map background
fig = plt.figure(figsize=(8, 8))
m = Basemap(projection='lcc', resolution='h', 
            lat_0=37.5, lon_0=-119,
            width=1E6, height=1.2E6)
m.shadedrelief()
m.drawcoastlines(color='gray')
m.drawcountries(color='gray')
m.drawstates(color='gray')

# 2. scatter city data, with color reflecting population
# and size reflecting area
m.scatter(lon, lat, latlon=True,
          c=np.log10(population), s=area,
          cmap='Reds', alpha=0.5)

# 3. create colorbar and legend
plt.colorbar(label=r'$\log_{10}({\rm population})$')
plt.clim(3, 7)

# make legend with dummy points
for a in [100, 300, 500]:
    plt.scatter([], [], c='k', alpha=0.5, s=a,
                label=str(a) + ' km$^2$')
plt.legend(scatterpoints=1, frameon=False,
           labelspacing=1, loc='lower left')

在这里插入图片描述

还有很多牛逼的东西

https://matplotlib.org/basemap/users/examples.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘要努力。

顺便点一个赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值