import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体
plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 创建图表和基本设置
plt.figure(figsize=(10, 6))  # 设置图表大小
plt.title('海图区域划分')
plt.xlabel('x (单位: 米)')
plt.ylabel('y (单位: 米)')
plt.xlim([0, 2200])
plt.ylim([0, 1500])

# 定义 x 和 y 的值
x = np.array([0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000])
y = np.array([0, 200, 400, 600, 800, 1000, 1200, 1400])

# 设置 x 轴刻度位置和标签
xticks = np.arange(0, 2201, 100)
plt.xticks(xticks, rotation=45, ha='right')  # 旋转刻度标签

# 设置 y 轴刻度
yticks = np.arange(0, 1501, 100)
plt.yticks(yticks)

# 设置网格线
plt.gca().grid(True)

# A海域
xa = [1400, 1700, 1700, 1400]
ya = [300, 300, 800, 800]
plt.fill(xa, ya, color='red', alpha=0.5, label='A海域')
plt.text(1550, 550, 'A海域', fontsize=12, ha='center')

# B海域
xb = [1020, 1700, 1700, 1400, 1400, 1020]
yb = [100, 100, 300, 300, 800, 800]
plt.fill(xb, yb, color='skyblue', alpha=0.5, label='B海域')
plt.text(1360, 450, 'B海域', fontsize=12, ha='center')

# 不可通行区
xc = [800, 900, 900, 800]
yc = [980, 980, 1500, 1500]
plt.fill(xc, yc, color='grey', alpha=0.5, label='不可通行区域')
plt.text(850, 1200, '不可通行区域', fontsize=12, ha='center', va='center', rotation=90)

xd = [800, 900, 900, 800]
yd = [820, 820, 210, 210]
plt.fill(xd, yd, color='grey', alpha=0.5)
plt.text(850, 600, '不可通行区域', fontsize=12, ha='center', va='center', rotation=90)

# M通道
xm = [800, 900, 900, 800]
ym = [980, 980, 820, 820]
plt.fill(xm, ym, color='green', alpha=0.5, label='M通道')
plt.text(850, 900, 'M通道', fontsize=10, ha='center')

# N通道
xn = [800, 900, 900, 800]
yn = [210, 210, 130, 130]
plt.fill(xn, yn, color='green', alpha=0.5, label='N通道')
plt.text(850, 150, 'N通道', fontsize=10, ha='center')

# 绘制虚线分割线
plt.plot([0, 2200], [300, 300], color='black', linestyle='dashed')
plt.plot([0, 2200], [800, 800], color='black', linestyle='dashed')
plt.plot([510, 900], [980, 980], color='black', linestyle='dashed')
plt.plot([510, 900], [820, 820], color='black', linestyle='dashed')

# 显示图例
plt.legend(loc='upper left')

# 显示图表
plt.show()

原文地址: https://www.cveoy.top/t/topic/J6b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录