使用cartopy绘制频率分布图并白化云南省区域

该博客介绍了如何利用Python的cartopy库绘制云南省的频率分布图,并进行白化处理。首先加载相关数据,然后通过scipy的样条插值方法进行数据平滑。接着,使用cartopy的地理要素和投影功能添加地图细节,并在图上绘制频率分布。通过插入额外的等宽或等高的子图,展示了月份和小时的频率信息。最后,博客中还展示了如何定制colorbar并调整其刻度和标签。
摘要由CSDN通过智能技术生成

import numpy as np

import matplotlib.transforms as mtransforms

import numpy as np

import netCDF4 as nc

import cartopy.crs as ccrs

import cartopy.feature as cf

import matplotlib.pyplot as plt

import cartopy.io.shapereader as shpreader

from cartopy.mpl.ticker import LatitudeFormatter,LongitudeFormatter

from matplotlib.path import Path

from cartopy.mpl.patch import geos_to_path

from matplotlib.colors import BoundaryNorm

from matplotlib.ticker import MaxNLocator

from matplotlib.colors import ListedColormap, BoundaryNorm

import pygrib


 

def add_equal_axes(ax, loc, pad, width):

    '''

    在原有的Axes旁新添一个等高或等宽的Axes并返回该对象.

    Parameters

    ----------

    ax : Axes or array_like of Axes

        原有的Axes,也可以为一组Axes构成的数组.

    loc : {'left', 'right', 'bottom', 'top'}

        新Axes相对于旧Axes的位置.

    pad : float

        新Axes与旧Axes的间距.

    width: float

        当loc='left'或'right'时,width表示新Axes的宽度.

        当loc='bottom'或'top'时,width表示新Axes的高度.

    Returns

    -------

    ax_new : Axes

        新Axes对象.

    '''

    # 无论ax是单个还是一组Axes,获取ax的大小位置.

    axes = np.atleast_1d(ax).ravel()

    bbox = mtransforms.Bbox.union([ax.get_position() for ax in axes])

    # 决定新Axes的大小位置.

    if loc == 'left':

        x0_new = bbox.x0 - pad - width

        x1_new = x0_new + width

        y0_new = bbox.y0

        y1_new = bbox.y1

    elif loc == 'right':

        x0_new = bbox.x1 + pad

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值