/frykit

A simple toolbox for drawing in Python

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

frykit

一个配合 Matplotlib 和 Cartopy 使用的工具箱,主要提供添加刻度和绘制**行政区划等功能。

安装

pip install frykit

依赖仅需 cartopy>=0.20.0

示例

为兰伯特投影的 GeoAxes 添加刻度

import frykit.plot as fplot

crs = ccrs.LambertConformal(central_longitude=105, standard_parallels=(25, 47))
ax = fig.add_subplot(111, projection=crs)

fplt.set_extent_and_ticks(
    ax, extents=[74, 136, 14, 56],
    xticks=np.arange(50, 161, 10),
    yticks=np.arange(0, 71, 10),
    grid=True, lw=0.5, ls='--', color='gray'
)

获取代表**行政区划的多边形对象

import frykit.shp as fshp

country = fshp.get_cnshp(level='国')
provinces = fshp.get_cnshp(level='省')

行政区划的 shapefile 文件来自 ChinaAdminDivisonSHP 项目,坐标已从 GCJ-02 坐标系处理到了 WGS84 坐标系上。

AxesGeoAxes 上直接绘制**省界和九段线

fplt.add_cn_province(ax, lw=0.3)
fplt.add_nine_line(ax, lw=0.5)

添加自备的多边形对象并填色

pc = fplt.add_polygons(
    ax, polygons, ccrs.PlateCarree(), array=data,
    cmap=cmap, norm=norm, ec='k', lw=0.4
)
cbar = fig.colorbar(pc, ax=ax)

用国界裁剪等值线填色图

cf = ax.contourf(
    lon, lat, data, levels, cmap='turbo',
    extend='both', transform=ccrs.PlateCarree()
)
fplt.clip_by_cn_border(cf, fix=True)

添加指北针和比例尺

fplt.add_north_arrow(ax, (0.95, 0.9))
fplt.add_map_scale(ax, (0.1, 0.1), length=1000, ticks=[0, 500, 1000])

定位南海地图

sub = fig.add_axes(ax.get_position(), projection=crs_map)
<plotting on sub>
fplt.locate_sub_axes(ax, sub, shrink=0.4)

效果如下图所示

contourf

fill

nerv_style

示例代码请见 test 目录。