当前位置: 首页 > article >正文

发不了Science?那是因为你不会画Science风格的配图

Part1大清帝国十四将军简介

清朝共设驻防将军十四人,分别为盛京将军、吉林将军、黑龙江将军、绥远城将军、伊犁将军、江宁将军、福州将军、杭州将军、荆州将军、西安将军、宁夏将军、成都将军、广州将军、乌里雅苏台将军。其中盛京、吉林、黑龙江、伊犁、乌里雅苏台五地为将军辖区。

清朝的驻防将军分为内地和边疆两类。

内地驻防将军‌包括:

江宁将军:驻地南京,分管四千余人的八旗兵。

福州将军:驻地福建,管理八旗兵。

杭州将军:驻地杭州,管理八旗兵。

荆州将军:驻地湖北荆州,管理八旗兵。

西安将军:驻地西安,管理陕西的八旗军务。

宁夏将军:驻地宁夏,管理当地的八旗兵。

成都将军:驻地成都,管理四川的八旗兵和绿营兵。

广州将军:驻地广州,管理当地的八旗兵。

绥远城将军:驻地绥远城(今呼和浩特),管理当地的八旗兵。

‌边疆驻防将军‌包括:

盛京将军:驻地沈阳,管理东北地区的军民事务。

吉林将军:驻地吉林乌拉,管理吉林省中东部地区。

黑龙江将军:驻地黑龙江,管理黑龙江地区的军民事务。

乌里雅苏台将军:驻地乌里雅苏台(今蒙古国扎门乌德),管理蒙古地区的军民事务。

伊犁将军:驻地伊犁,管理新疆地区的军民事务。

Part2Python绘制清朝十四将军驻地

import numpy as np
import matplotlib.pyplot as plt
import xarray as xr
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.io.shapereader import Reader
import pandas as pd
from matplotlib import rcParams
config = {"font.family":'Times New Roman',"font.size":19,"mathtext.fontset":'stix'}
rcParams.update(config)
# 读取全球地形数据
with xr.open_dataset('./ETOPO2v2g_f4.nc') as ds:
    ds = ds.sel(x=slice(60, 150), y=slice(0, 60))
    lon, lat = np.meshgrid(ds['x'], ds['y'])
    dem = ds['z'].to_numpy()
region=[60, 150, 0, 60]
proj=ccrs.PlateCarree()
fig=plt.figure(figsize=(16,9),dpi=600)
ax = plt.axes(projection  = proj)
ax.set_extent(region, crs = proj)
ax.stock_img()
ax.add_feature(cfeature.COASTLINE.with_scale('50m'),linewidth=0.5,zorder=2,color='k')# 添加海岸线
ax.add_feature(cfeature.OCEAN.with_scale('50m'))
ax.add_feature(cfeature.LAND.with_scale('50m'))
ax.add_feature(cfeature.LAKES.with_scale('50m'))
# 在画布上绘图,这个叫axes,这不是坐标轴喔
tick=np.arange(0,6001,1000)
cs=ax.pcolormesh(lon,lat,dem,transform=ccrs.PlateCarree(),cmap=custom_cmap,vmin=0,vmax=6000)
import geopandas as gpd
gdf=gpd.read_file('./qing_c8.shp',encoding='utf-8')
import cartopy.mpl.patch as cmp
paths=cmp.geos_to_path(list(gdf['geometry']))
import matplotlib.path as mpath
clip_path=mpath.Path.make_compound_path(*paths)
cs.set_clip_path(clip_path,transform=ax.transData)
cbar=plt.colorbar(cs,ticks=tick,shrink=0.98,orientation='vertical',extend='both',pad=0.01,aspect=30)
cbar.ax.tick_params(labelsize=18,direction='in',right=False)
font3={'family':'SimHei','size':18,'color':'k'}
cbar.set_label('海拔高度/(m)',fontdict=font3)
ax.set_xticks(np.arange(region[0], region[1] + 1, 10), crs = proj)
ax.set_yticks(np.arange(region[-2], region[-1] + 1, 10), crs = proj)
ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=False))
ax.yaxis.set_major_formatter(LatitudeFormatter())
ax.add_geometries(Reader(r'./river1.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='b',linewidth=1)
ax.add_geometries(Reader(r'./Export_Output.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=1)
ax.add_geometries(Reader(r'./nineline.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=1)
ax.add_geometries(Reader(r'./ne_50m_lakes.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=0.2)
ax.add_geometries(Reader(r'./1级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='RoyalBlue',linewidth=0.4)
ax.add_geometries(Reader(r'./2级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='DodgerBlue',linewidth=0.3)
ax.add_geometries(Reader(r'./3级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='DeepSkyBlue',linewidth=0.2)
ax.add_geometries(Reader(r'./4级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='SkyBlue',linewidth=0.15)
ax.add_geometries(Reader(r'./5级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='LightSkyBlue',linewidth=0.05)
ax.add_geometries(Reader(r'./主要湖泊.shp').geometries(),ccrs.PlateCarree(),edgecolor='none',linewidth=0,facecolor='#BEE8FF')
font4={'family':'SimHei','size':11,'color':'r'}
df1 = pd.read_excel(r"./qing14.xlsx")
lat = df1['lat']
lon = df1['lon']
plt.scatter(df1['lon'].values,df1['lat'].values,marker='o',s=18,color ="r")
for i, j, k in list(zip(df1['lon'].values, df1['lat'].values, df1['name1'].values)):
    plt.text(i+0.12,j-0.2,k,fontdict=font4)
font3={'family':'SimHei','size':18,'color':'k'}
plt.ylabel("纬度",fontdict=font3)
plt.xlabel("经度",fontdict=font3)
ax.set_title("大清帝国十四将军辖区",fontdict=font3)
plt.savefig('./plot359.png',dpi=800,bbox_inches='tight',pad_inches=0)
plt.show()

 


http://www.kler.cn/a/382070.html

相关文章:

  • 将一个单链表{a1,b1,a2,b2……an,bn}拆分成 {a1.a2…an}和{bn.bn-1.……b1}
  • Caffeine 手动策略缓存 put() 方法源码解析
  • 【那些年踩过的坑-前端篇- Mac版本】npm init vite 失败,报错`CERT_HAS_EXPIRED npm ERR
  • 全面解析Flutter中的Stream用法及实际应用
  • 关于git命令
  • 使用wordcloud与jieba库制作词云图
  • 静态数据区,堆,栈
  • linux动态库与静态库
  • 从底层技术到实际应用:Claude与ChatGPT谁更适合学术写作?
  • Redis学习:BitMap/HyperLogLog/GEO案例 、布隆过滤器BloomFilter、缓存预热+缓存雪崩+缓存击穿+缓存穿透
  • 20241106,LeetCode 每日一题,用 Go 实现整数回文数判断
  • Redis(2):内存模型
  • java:题目:用Java实现简单的自取取款操作
  • Leetcode 第 422 场周赛题解
  • Flutter中有趣的级联语法
  • 蓝桥杯真题——三角回文数(C语言)
  • PCL 点云配准 精度评价指标均方根误差(RMSE)
  • ASP .NET CORE 6 在项目中集成WatchDog开源项目
  • 社区养老服务小程序ssm+论文源码调试讲解
  • Mac M1 Docker创建Rocketmq集群并接入Springboot项目
  • 《Keras3 深度学习初探:开启Keras3 深度学习之旅》
  • 关注AI技术的应用前景,抓住未来科技发展的机遇!
  • 闪存学习_2:Flash-Aware Computing from Jihong Kim
  • 蓝桥杯练习笔记(二十-日期问题)
  • Docker篇(数据卷)
  • GaussDB的向量化处理技术