Python-气象-大气科学-可视化绘图系列(三)—— 地图上自动标注省会名称(demo调整中)(代码+示例)
2024-09-06 16:22:40
本文为原创文章
本文链接:https://www.cnblogs.com/zhanling/p/12606990.html
# -*- coding: utf-8 -*- '''
Author: HermionX source:https://github.com/HermioneX
''' import numpy as np
import xarray as xr
import os
import datetime
from mpl_toolkits.basemap import Basemap
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import matplotlib.patches as mpatches
import matplotlib.colors as colors
plt.rcParams['font.sans-serif']=['simhei']
plt.rcParams['axes.unicode_minus'] = False
defaultencoding = 'utf-8' def plot1pic(src_fn,out_fn,start_str,cnt_str):
print(src_fn)
ds = xr.open_dataset(src_fn)
t = ds['value']*100
t.data[t.data<20] = 0
lons = ds.lon.data
lats = ds.lat.data
temp = xr.DataArray(t.data.T, coords=[lats,lons], dims=['latitude','longitude']) fig, ax = plt.subplots(figsize = (18,16)) m = Basemap(projection='cyl',resolution='l',llcrnrlon=lons.min(),llcrnrlat=lats.min(),
urcrnrlon=lons.max(),urcrnrlat=lats.max(),lon_0=120.,lat_0=90)
Lon,Lat = np.meshgrid(lons[:],lats[:])
X,Y = m(Lon,Lat)
shp_info3 = m.readshapefile("./CHN_adm_shp/CHN_adm1",'states',drawbounds=True,linewidth = 0.4,zorder=10) short_state_names = {u"湖北":"Hubei",
u"北京":"Beijing",
u"上海":"Shanghai",
u"天津":"Tianjin",
u"重庆":"Chongqing",
u"香港":"Xianggang",
} printed_names = [] for shapedict, state in zip(m.states_info, m.states):
if shapedict['NAME_1'] not in short_state_names.values(): continue
short_name = short_state_names.keys()[short_state_names.values().index(shapedict['NAME_1'])]
if short_name in printed_names: continue
x, y = np.median(np.array(state),axis=0)
print(x,y)
plt.text(x, y, short_name, ha="center")
printed_names += [short_name] cm = plt.cm.get_cmap('rainbow')
print(np.min(t.data),np.max(t.data))
cs=m.contourf(X,Y,t.data.T,cmap=cm) l = 0.95
b = 0.23
w = 0.02
h = 1 - 2*b plt.title( start_str +' ' +cnt_str,fontdict={'weight':'normal','size': 20},loc ='left')
rect = [l,b,w,h]
cbar_ax = fig.add_axes(rect)
cbar = plt.colorbar(cs,orientation='vertical',cax =cbar_ax)
cbar.ax.tick_params(labelsize = 16)
font = {'family' : 'simhei',
'color' : 'black',
'weight' : 'normal',
'size' : 16,
}
cbar.set_label(u'(%)' ,fontdict=font) #设置colorbar的标签字体及其大小
plt.savefig(out_fn,bbox_inches = 'tight')
最新文章
- UIView中的坐标转换
- 怎么解决Android studio导入项目卡死
- 细微之处:比较两种CSS清除浮动的兼容
- C++Primer 第十八章
- RequireJS入门(一) 转
- hand第四次考核
- 畅通工程--hdu1232(并查集)
- ignore,neglect,omit,overlook
- 关于三星设备 Activity.onDestroy() 被调用。显示“开发者选项”
- Canvas绘制五角星
- Nginx 对上游使用SSL链接
- request接受表单数据中文乱码问题分析
- request.servervariables参数
- 20165215 2017-2018-2 《Java程序设计》第八周学习总结
- Linux系统默默改变了人类世界的生活方式
- TensorFlow实现FM
- 回去看linux的指令1
- microtip Tooltip工具提示样式
- [New learn] NSOperation基本使用
- SpringBoot 使用(三): 配置文件详解
热门文章
- 初步了解HTTP协议
- vue项目创建与使用
- [ICRA 2019]Multi-Task Template Matching for Object Detection, Segmentation and Pose Estimation Using Depth Images
- 洛谷 P3935 Calculating 题解
- leetcode 每日签到 409. 最长回文串
- 迁移桌面程序到MS Store(15)——通过注册表开启Developer Mode
- [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?
- P1250 种树(差分约束 / 贪心)
- 使用Pytorch在多GPU下保存和加载训练模型参数遇到的问题
- 如何用git将本地项目push到Github