basemap安装
通过该网站(https://www.lfd.uci.edu/~gohlke/pythonlibs/)下载对应版本的Pyproj和basemap的whl文件,如图12.1和12.2所示。
切换到这两个whl文件的路径下,按顺序通过pip依次安装Pyproj和basemap文件,代码如下,安装Pyproj
h:
cd H:\python数据分析\数据
pip install pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
同样的方法安装basemap
basemap使用
首先,导入需要的第三方库,通过basemap初始化一个地图对象,通过drawcoastlines绘制海岸线,代码如下。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
%matplotlib inline
map1 = Basemap(projection='ortho', lat_0=90, lon_0=-105,
resolution='l', area_thresh=1000.0) #初始化地图对象
map1.drawcoastlines() #绘制海岸线
通过drawcountries方法绘制国家边界,代码如下
map1 = Basemap(projection='ortho', lat_0=90, lon_0=-105,
resolution='l', area_thresh=1000.0)
map1.drawcoastlines() #绘制海岸线
map1.drawcountries() #绘制国家
在实际案例中,需对特定国家或地区进行绘制地图,这样就需要通过llcrnrlon、llcrnrlat、urcrnrlon和urcrnrlat指定左下角经纬度和右上角经纬度,代码如下
map2 = Basemap(projection='stere', lat_0=90, lon_0=-105,
llcrnrlon=-118.67, llcrnrlat=23.41,
urcrnrlon=-64.5, urcrnrlat=45.44,
resolution='l', area_thresh=1000.0)
map2.drawcoastlines() #绘制海岸线
map2.drawcountries() #绘制国家
map2.drawmapboundary() #绘制边界
map2.drawstates() #绘制州
map2.fillcontinents(color='blue',alpha=0.5) #填充颜色
map2.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map2.drawparallels(np.arange(-90, 90, 30)) #绘制纬线
通过坐标定位,可以在地图上绘制图形,代码如下
map2 = Basemap(projection='stere', lat_0=90, lon_0=-105,
llcrnrlon=-118.67, llcrnrlat=23.41,
urcrnrlon=-64.5, urcrnrlat=45.44,
resolution='l', area_thresh=1000.0)
map2.drawcoastlines() #绘制海岸线
map2.drawcountries() #绘制国家
map2.drawmapboundary() #绘制边界
map2.drawstates() #绘制州
map2.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map2.drawparallels(np.arange(-90, 90, 30)) #绘制纬线
lon = -74
lat = 40.43
x,y = map2(lon, lat) #映射坐标
map2.plot(x, y, 'ro', markersize=8) #绘制散点图
通过matplotlib库的text方法,为散点加入文本注释。
map2 = Basemap(projection='stere', lat_0=90, lon_0=-105,
llcrnrlon=-118.67, llcrnrlat=23.41,
urcrnrlon=-64.5, urcrnrlat=45.44,
resolution='l', area_thresh=1000.0)
map2.drawcoastlines() #绘制海岸线
map2.drawcountries() #绘制国家
map2.drawmapboundary() #绘制边界
map2.drawstates() #绘制州
map2.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map2.drawparallels(np.arange(-90, 90, 30)) #绘制纬线
lon = -74
lat = 40.43
x,y = map2(lon, lat) #映射坐标
map2.plot(x, y, 'ro', markersize=8) #绘制散点图
plt.text(x,y,'New York') #文本注释
pyecharts地图绘制
利用pyecharts绘制地图,需要下载地图js文件,通过pip进行安装
pip install echarts-countries-pypkg #全球国家地图
pip install echarts-china-provinces-pypkg #中国省级地图
pip install echarts-china-cities-pypkg #中国市级地图
利用Map方法可绘制地图,代码如下
value = [155, 78, 23, 65]
label = ["北京", "上海", "西藏", "广东"]
map1 = pyecharts.Map("全国地图示例")
map1.add("",label, value, maptype='china')
map1.render() #生成html文件
该add方法的参数如下,maptype设置地图类型,支持china、world、中国省市名称等;is_roam可缩放地图;is_map_symbol_show显示地图红点
add(name, attr, value,
maptype='china',
is_roam=True,
is_map_symbol_show=True, **kwargs)
设置is_label_show=True,可以显示各省份名称,代码如下,如图12.25所示。
value = [155, 78, 23, 65]
label = ["北京", "上海", "西藏", "广东"]
map1 = pyecharts.Map("全国地图示例", width=1200, height=600)
map1.add("",label, value, maptype='china', is_label_show=True)
map1.render() #生成html文件
value = [233, 102, 41, 82]
attr = ['武汉市', '咸宁市', '黄冈市', '黄石市']
map1 = pyecharts.Map("湖北省地图")
map1.add("", attr, value, maptype='湖北', is_visualmap=True,
visual_text_color='#000')
map1.render()
value = [46, 54, 45, 82, 45]
attr= ["China", "Canada", "Brazil", "Russia", "United States"]
map1 = pyecharts.Map("世界地图", width=1200, height=600)
map1.add("", attr, value, maptype="world", is_visualmap=True,
visual_text_color='#000', is_map_symbol_show=False)
map1.render()
地图坐标系组件用于地图的绘制,支持在地图上绘制散点图,线集。利用Geo方法可在地图上绘制散点图等,代码如下。
data = [
('上海', 78),('武汉', 56),('长沙', 45),('北京', 65),('苏州', 32),('盐城', 15),
('南昌', 87),('青岛', 45),('广州', 78),('拉萨', 12),('桂林', 21),('西安', 42),
('济南', 12)]
geo = pyecharts.Geo("地图绘制案例一",
title_pos="center", width=1200,
height=600)
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0, 100], visual_text_color="#fff",
geo_normal_color="#FFFFFF",
symbol_size=15, is_visualmap=True)
geo.render()
add(name, attr, value,
type="scatter",
maptype='china',
symbol_size=12,
border_color="#111",
geo_normal_color="#323c48",
geo_emphasis_color="#2a333d",
is_roam=True, **kwargs)
data = [
('上海', 78),('武汉', 56),('长沙', 45),('北京', 65),('苏州', 32),('盐城', 15),
('南昌', 87),('青岛', 45),('广州', 78),('拉萨', 12),('桂林', 21),('西安', 42),
('济南', 12)]
geo = pyecharts.Geo("地图绘制案例二",
title_pos="center", width=1200,
height=600)
attr, value = geo.cast(data)
geo.add("", attr, value, type='heatmap', visual_range=[0, 100], visual_text_color="#fff",
geo_normal_color="#FFFFFF",
symbol_size=15, is_visualmap=True)
geo.render()