Python 绘制contourf图

from scipy import interpolate
import matplotlib.pyplot as plt
import numpy as np

xx, yy = np.meshgrid(lon2, lat2)
zz=ws20190203

import geopandas
from shapely import geometry
import matplotlib.pyplot as plt
import json


import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
import matplotlib.path as mpath
import matplotlib.ticker as mticker
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import cartopy.mpl.ticker as cticker
import cartopy.io.shapereader as shpreader
import seaborn as sns
from matplotlib import rcParams
import matplotlib as mpl
mpl.rcParams["font.family"] = 'Times New Roman'  #默认字体类型
mpl.rcParams["mathtext.fontset"] = 'cm' #数学文字字体
mpl.rcParams["font.size"] = 26  #字体大小

font = {
    
    'family' : 'Times New Roman',
        'color'  : 'black',
        'weight' : 'normal',
        'size'   : 25,
        }
fig1 = plt.figure(figsize=(14,7))

########################################################################################另外三幅子图
ax2 = fig1.add_subplot(1,1,1, projection=ccrs.PlateCarree())
gl=ax2.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
                  linewidth=1, color='gray', alpha=0.5, linestyle='--')
gl.bottom_labels=False #关闭上部经纬标签                                  
gl.right_labels=False

gl.xlocator=mticker.FixedLocator(np.arange(107,117,2))      
gl.ylocator=mticker.FixedLocator(np.arange(27,35,2)) 

# gl.xlabel_style={'size':3}#修改经纬度字体大小                             
# gl.ylabel_style={'size':3}
ax2.spines['geo'].set_linewidth(2)#调节边框粗细

ax2.add_feature(cfeature.COASTLINE.with_scale('110m'))
img_extent1=[107,117,28,34]
ax2.set_extent(img_extent1, ccrs.PlateCarree())

c7 = ax2.contourf(xx,yy,zz,levels=np.linspace(0.4,3.6,9),transform=ccrs.PlateCarree(),cmap=plt.cm.bwr,alpha=0.8)

position=fig1.add_axes([0.85, 0.131, 0.04, 0.75])#位置[左,下,宽度,高度]
cb=plt.colorbar(c7,cax=position)
cb.ax.tick_params(labelsize=24)  #设置色标刻度字体大小
cb.outline.set_linewidth(2)
tick_locator = ticker.MaxNLocator(nbins=5)  # colorbar上的刻度值个数
cb.locator = tick_locator
cb.update_ticks()

#########################################################################绘制省边界线
data = geopandas.read_file('中国.json')
a=data.geometry.to_json()
polygon_dict = json.loads(a)
features=len(polygon_dict["features"][:])
point_list=[]
for i in range(features):
    #print('features****************************************')
    coordinates=len(polygon_dict["features"][i]["geometry"]["coordinates"][:])
    for j in range(coordinates):
        #print('coordinates-----------------------------------')
        rows=int(len(np.array(polygon_dict["features"][i]["geometry"]["coordinates"][j]).flatten())/2)
        
        point=(np.array(polygon_dict["features"][i]["geometry"]["coordinates"][j]).flatten()).reshape(rows,2)
        #print(point)
        ax2.plot(point[:,0],point[:,1],transform=ccrs.PlateCarree(),linewidth=2,color='k')
        point_list.append(point)
ini=point_list[0]
num=len(point_list)
for k in range(1,num):
    ini=np.vstack((ini,point_list[k]))
########################################################################绘制市边界线
data = geopandas.read_file('湖北省.json')
a=data.geometry.to_json()
polygon_dict = json.loads(a)
features=len(polygon_dict["features"][:])
point_list=[]
for i in range(features):
    #print('features****************************************')
    coordinates=len(polygon_dict["features"][i]["geometry"]["coordinates"][:])
    for j in range(coordinates):
        #print('coordinates-----------------------------------')
        rows=int(len(np.array(polygon_dict["features"][i]["geometry"]["coordinates"][j]).flatten())/2)
        
        point=(np.array(polygon_dict["features"][i]["geometry"]["coordinates"][j]).flatten()).reshape(rows,2)
        #print(point)
        ax2.scatter(point[:,0][::2],point[:,1][::2],transform=ccrs.PlateCarree(),marker='.',s=1,color='k')
        point_list.append(point)
ini=point_list[0]
num=len(point_list)
for k in range(1,num):
    ini=np.vstack((ini,point_list[k]))
#############################################################################

plt.savefig('wd20190203.jpg',dpi=300)

猜你喜欢

转载自blog.csdn.net/weixin_45577825/article/details/120458967