Python-气象-大气科学-可视化绘图系列(三)—— 地图上自动标注省会名称(demo调整中)(代码+示例)

本文为原创文章

本文链接:https://www.cnblogs.com/zhanling/p/12606990.html

  1 # -*- coding: utf-8 -*-
  2
  3
  4 ‘‘‘
  5 Author: HermionX
  6
  7 source:https://github.com/HermioneX
  8 ‘‘‘
  9
 10 import numpy as np
 11 import xarray as xr
 12 import os
 13 import datetime
 14 from mpl_toolkits.basemap import Basemap
 15 import matplotlib
 16 matplotlib.use("Agg")
 17 import matplotlib.pyplot as plt
 18 from matplotlib.patches import Polygon
 19 import matplotlib.patches as mpatches
 20 import matplotlib.colors as colors
 21 plt.rcParams[‘font.sans-serif‘]=[‘simhei‘]
 22 plt.rcParams[‘axes.unicode_minus‘] = False
 23 defaultencoding = ‘utf-8‘
 24
 25
 26 def plot1pic(src_fn,out_fn,start_str,cnt_str):
 27     print(src_fn)
 28     ds = xr.open_dataset(src_fn)
 29     t =  ds[‘value‘]*100
 30     t.data[t.data<20] = 0
 31     lons = ds.lon.data
 32     lats = ds.lat.data
 33     temp = xr.DataArray(t.data.T, coords=[lats,lons], dims=[‘latitude‘,‘longitude‘])
 34
 35     fig, ax = plt.subplots(figsize = (18,16))
 36
 37     m = Basemap(projection=‘cyl‘,resolution=‘l‘,llcrnrlon=lons.min(),llcrnrlat=lats.min(),
 38             urcrnrlon=lons.max(),urcrnrlat=lats.max(),lon_0=120.,lat_0=90)
 39     Lon,Lat = np.meshgrid(lons[:],lats[:])
 40     X,Y = m(Lon,Lat)
 41     shp_info3 = m.readshapefile("./CHN_adm_shp/CHN_adm1",‘states‘,drawbounds=True,linewidth = 0.4,zorder=10)
 42
 43     short_state_names  =  {u"湖北":"Hubei",
 44                             u"北京":"Beijing",
 45                             u"上海":"Shanghai",
 46                             u"天津":"Tianjin",
 47                             u"重庆":"Chongqing",
 48                             u"香港":"Xianggang",
 49                             u"澳门":"Aomen",
 50                             u"安徽":"Anhui",
 51                             u"福建":"Fujian",
 52                             u"广东":"Guangdong",
 53                             u"广西":"Guangxi",
 54                             u"贵州":"Guizhou",
 55                             u"甘肃":"Gansu",
 56                             u"海南":"Hainan",
 57                             u"河北":"Hebei",
 58                             u"河南":"Henan",
 59                             u"黑龙江":"HeiLongjiang",
 60                             u"湖北":"Hubei",
 61                             u"湖南":"Hunan",
 62                             u"吉林":"Jilin",
 63                             u"江苏":"Jiangsu",
 64                             u"江西":"Jiangxi",
 65                             u"辽宁":"Liaoning",
 66                             u"内蒙古":"Neimenggu",
 67                             u"宁夏":"Ningxia",
 68                             u"青海":"Qinghai",
 69                             u"陕西":"Shanxi",
 70                             u"山西":"Shanxi",
 71                             u"山东":"Shandong",
 72                             u"四川":"Sichuan",
 73                             u"台湾":"Taiwan",
 74                             u"西藏":"Xizang",
 75                             u"新疆":"Xinjiang",
 76                             u"云南":"Yunnan",
 77                             u"浙江":"Zhejiang",}
 78
 79     printed_names = []
 80
 81     for shapedict, state in zip(m.states_info, m.states):
 82         if shapedict[‘NAME_1‘] not in short_state_names.values(): continue
 83         short_name = short_state_names.keys()[short_state_names.values().index(shapedict[‘NAME_1‘])]
 84         if short_name in printed_names: continue
 85         x, y = np.median(np.array(state),axis=0)
 86         print(x,y)
 87         plt.text(x, y, short_name, ha="center")
 88         printed_names += [short_name]
 89
 90
 91     cm = plt.cm.get_cmap(‘rainbow‘)
 92     print(np.min(t.data),np.max(t.data))
 93     cs=m.contourf(X,Y,t.data.T,cmap=cm)
 94
 95     l = 0.95
 96     b = 0.23
 97     w = 0.02
 98     h = 1 - 2*b
 99
100     plt.title( start_str +‘             ‘ +cnt_str,fontdict={‘weight‘:‘normal‘,‘size‘: 20},loc =‘left‘)
101     rect = [l,b,w,h]
102     cbar_ax = fig.add_axes(rect)
103     cbar = plt.colorbar(cs,orientation=‘vertical‘,cax =cbar_ax)
104     cbar.ax.tick_params(labelsize = 16)
105     font = {‘family‘ : ‘simhei‘,
106         ‘color‘  : ‘black‘,
107         ‘weight‘ : ‘normal‘,
108         ‘size‘   : 16,
109         }
110     cbar.set_label(u‘(%)‘ ,fontdict=font) #设置colorbar的标签字体及其大小
111     plt.savefig(out_fn,bbox_inches = ‘tight‘)

原文地址:https://www.cnblogs.com/zhanling/p/12606990.html

时间: 2024-10-31 12:57:23

Python-气象-大气科学-可视化绘图系列(三)—— 地图上自动标注省会名称(demo调整中)(代码+示例)的相关文章

【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------------------------------------------------------------------------------------------------------- 哇,好久没有上来了.主要是因为最近工作繁忙,加上休息时间被各种排练.社团活动占满,导致木有更新此博客.

Python爬取房产数据,在地图上展现!

小伙伴,我又来了,这次我们写的是用python爬虫爬取乌鲁木齐的房产数据并展示在地图上,地图工具我用的是 BDP个人版-免费在线数据分析软件,数据可视化软件 ,这个可以导入csv或者excel数据. 首先还是分析思路,爬取网站数据,获取小区名称,地址,价格,经纬度,保存在excel里.再把excel数据上传到BDP网站,生成地图报表 本次我使用的是scrapy框架,可能有点大材小用了,主要是刚学完用这个练练手,再写代码前我还是建议大家先分析网站,分析好数据,再去动手写代码,因为好的分析可以事半功

在地图上添加标注

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <li

VS Extension+NVelocity系列(三)&mdash;&mdash;让VS支持 NVelocity的智能提示(中)

一.定义 我们知道,我们的插件是服务于NVelocity的,在你的项目当中,对于NVelocity的模板应当有一个统一的文件扩展名,以便于VS在打开指定扩展名的文件后,就能起到具体的作用. 如果我没有记错,Castle Monorail MVC 的NVelocity模板一律为.vm文件,本例也以.vm为准. 在项目上新建一个NVDefinition类,内容如下 internal static class NVDefinition { public const string ContentType

在地图上增加标注点并为每个点增加各自的信息窗口

//请求用户微博信息 function request(user_id){ createXMLHttpRequest(); xmlHttp.onreadystatechange = back; var str = getUrl(); var url = str + "/points_handle.php?uid=" + user_id; xmlHttp.open("GET",url,true); xmlHttp.send(null); } //得到微博信息 func

Swift基础学习(三)《The Swift Programming Language 中文版》前言部分代码示例

1 import UIKit 2 3 var str = "Hello, playground" 4 5 var myVariable = 42 6 myVariable = 50 7 let myConstant = 42 8 9 let implicitInteger = 70 10 let implicitDouble = 70.0 11 let explicitDouble: Double = 70 12 let explicitFloat: Float = 4 13 14 l

2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python

知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例Python入门教程 3.1.1_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 中文代码示例Python入门教程 3.1.2 第一部分_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 中文代码示例Python入门教程 3.1.2 第二部分_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

iOS开发之在地图上绘制出你运行的轨迹

首先我们看下如何在地图上绘制曲线.在Map Kit中提供了一个叫MKPolyline的类,我们可以利用它来绘制曲线,先看个简单的例子. 使用下面代码从一个文件中读取出经纬度,然后创建一个路径:MKPolyline实例. 1 -(void) loadRoute 2 { 3 NSString* filePath = [[NSBundle mainBundle] pathForResource:@"route" ofType:@"csv"]; 4 NSString* fi

百度地图循环添加标注,并循环为鼠标悬停标注时信息窗口问题解决

//设备在地图上进行标注    function GetGateInfo(vSID, vMap) { var icon = "../Content/easyui/themes/icons/gate.png";        var myIcon = new BMap.Icon(icon, new BMap.Size(32, 32), {            offset: new BMap.Size(32, 32)        }); $.ajax({            typ