经过四个案例的学习,有了很大的进步,感谢(公众号:气象学家)
这次画一个省级温度分布,原理和程序与之前的全国一样,这里就不多说了,可以看注释,shp文件的读取可以看上一个帖子,就是怕这里大家出问题:
上图
from matplotlib.path import Path
from matplotlib.patches import PathPatch
import matplotlib.pyplot as plt
import numpy as np
import shapefile
import xarray as xr
from mpl_toolkits.basemap import Basemap
plt.rcParams.update({'font.size':20})
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
fig = plt.figure(figsize=[12,18])
ax = fig.add_subplot(111)
sf = shapefile.Reader('Zhejiang_province')
shapes = sf.shapes()
codes = []
pts = shapes[0].points
prt = list(shapes[0].parts) + [len(pts)]
for i in range(len(prt) - 1):
codes += [Path.MOVETO]
codes += [Path.LINETO] * (prt[i+1] - prt[i] -2)
codes += [Path.CLOSEPOLY]
clip = Path(pts, codes)
clip = PathPatch(clip, transform=ax.transData)
ds = xr.open_dataset('EC-Interim_monthly_2018.nc')
lat = ds.latitude
lon = ds.longitude
data = (ds['t2m'][0,::-1,:] - 273.15)
cbar_kwargs = {
'orientation': 'horizontal',
'label': 'Temperature (℃)',
'shrink': 0.02,
'ticks': np.arange(0, 10 + 1, 1),
'pad': -0.01,
'shrink': 0.95
levels = np.arange(0, 8 + 1, 0.2)
cs = data.plot.contourf(ax=ax,levels=levels,cbar_kwargs=cbar_kwargs, cmap='Spectral_r')
for contour in cs.collections:
contour.set_clip_path(clip)
m = Basemap(llcrnrlon=118.0,
llcrnrlat=27.0,
urcrnrlon=123.0,
urcrnrlat=31.5,
resolution = None,
projection = 'cyl')
m.readshapefile('Zhejiang_city','Zhejiang_city Map',color='k',linewidth=1.2)
m.readshapefile('Zhejiang_province','Zhejiang Map',color='k',linewidth=1.2)
parallels = np.arange(25,35,1)
m.drawparallels(parallels,labels=[True,True,True,True],color='dimgrey',dashes=[1, 3])
meridians = np.arange(118,123,1)
m.drawmeridians(meridians,labels=[True,True,False,True],color='dimgrey',dashes=[1, 3])
plt.ylabel('')
plt.xlabel('')
plt.rcParams.update({'font.size':30})
ax.set_title(u' 浙江省2018年1月平均气温',color='blue',fontsize= 25)
bill0 = 120.0
tip0 = 29.3
plt.scatter(bill0, tip0,marker='.',s=100 ,color ="blue")
bill2 = 120.2
tip2 = 30.4
plt.scatter(bill2, tip2,marker='*',s=150 ,color ="orange" )
plt.rcParams.update({'font.size':30})
plt.text(bill0-0.4, tip0+0.2, u"义乌市", fontsize= 20 )
plt.text(bill2-0.4, tip2+0.2, u"杭州市", fontsize= 20 )
plt.savefig("Zhengjiang_mask_T2m.png", dpi=300, bbox_inches='tight')
plt.show()
有谁需要各自省份的文件的可以给我留言,邮箱网盘都行,发给你
感谢支持。
小白学习Basemap气象画地图的第四天(省级温度分布)经过四个案例的学习,有了很大的进步,感谢(公众号:气象学家)这次画一个省级温度分布,原理和程序与之前的全国一样,这里就不多说了,可以看注释,shp文件的读取可以看上一个帖子,就是怕这里大家出问题:上图完整代码from matplotlib.path import Pathfrom matplotlib.patches import PathPatchimport matplotlib.pyplot as pltimport numpy
小白学习Basemap气象画地图的第三天(中国温度分布图,mask外部)
首先还是感谢公众号(气象学家),代码和测试数据来自与他,不过这次有长进了,自己学会修改了。还是逐条向大家解释。
(和大家分享一个经验,在代码中查看某个函数或者变量的定义,可以利用快捷键快速寻找,pycharm里面是ctrl + 鼠标左键点击,这样的意义在于可以定位到最原始的构造函数,定义等位置,从而了解其用法,参数设置。要学会看__init__()里面的东西)
这次是用Basemap库画的,这个库在线安装好像已经停止了,只能下载离线包
刚好最近又一直在用python做数据分析方向的研究,本着科(chi)学(bao)分(cheng)析(zhe)的态度,决定做一期关于长沙历年气象的分析报告。
本文简单记录了整个工作流程,以此方便其他地区的朋友参照本范例科学分析。
【数据篇】
首先当然是去找数据源,历...
一,简介:
最近想将微信好友的所在城市画在地图上,可以使用basemap,但搜索了很久,也没找到一个适合的案例,大家基本上讲得不明不白,很多人甚至只是转载别人的做法,或者颜色和散点的大小是通过data预先设计好的。
我需要根据分布比例的大小来计算散点的大小,并通过一组颜色管理方案随机分配颜色,现在我做出来了,分享给大家。
二,实现的思路:
1,绘制地图,引用中国和台湾地图,如果你是外国友人,好友主...
这篇博文主要实现用Pyhon,Matplotlib/Basemap绘制中国地图,主要是各省份行政图(轮廓图),地形图和人口分布图,其中人口分布可以嵌入到上述图形中。
参考链接:
(1)https://www.zhihu.com/que
# 创建地图
map = Basemap(projection='mill',llcrnrlat=-90,urcrnrlat=90,llcrnrlon=-180,urcrnrlon=180,resolution='c')
# 绘制海岸线
map.drawcoastlines()
# 绘制国家边界
map.drawcountries()
# 绘制州界限
map.drawstates()
# 绘制城市
map.drawcounties()
# 显示地图
plt.show()
你可以根据需要进一步自定义地图的样式、标记等。这只是一个基本示例,你可以根据自己的需求进行修改和扩展。