02 六边形分箱 hexbin
用途
上万点散点的密度替代方案,比半透明 scatter 更干净、层次更清楚。
示例(5 张)
02-1 三万点负荷散点的六边形密度

02-2 光伏出力与辐照度的六边形密度

02-3 谐波幅值与相位的密度分布

02-4 电机转速—转矩大样本工作点分布

02-5 电压偏差与三相不平衡度的密度

代码
以下 5 个函数取自 code/第一批_分布与矩阵261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。
# 摘自 code/第一批_分布与矩阵261107.py
def hb_01():
"""三万点负荷散点的六边形密度。"""
fig, ax = new_fig(left=0.19, bottom=0.21, right=0.86)
rng = np.random.default_rng(201)
x = rng.normal(520, 130, 30000)
y = 0.52 * x + rng.normal(0, 68, 30000)
h = ax.hexbin(x, y, gridsize=32, cmap=CMAP_SEQ, mincnt=1, linewidths=0.1)
ax.set_xlabel("有功功率 " + IT["P"] + " / kW")
ax.set_ylabel("无功功率 " + IT["Q"] + " / kvar")
cbar(fig, ax, h, "样本数")
save(fig, "02_六边形分箱", "02_六边形分箱_负荷散点密度")
def hb_02():
"""光伏出力与辐照度的六边形密度。"""
fig, ax = new_fig(left=0.19, bottom=0.21, right=0.86)
rng = np.random.default_rng(202)
g = rng.uniform(0, 1050, 26000)
p = 0.92 * g * rng.uniform(0.86, 1.0, 26000) + rng.normal(0, 14, 26000)
h = ax.hexbin(g, p, gridsize=34, cmap=CMAP_SEQ, mincnt=1, linewidths=0.1)
ax.set_xlabel("辐照度 " + IT["G"] + " / (W/m²)")
ax.set_ylabel("有功出力 " + IT["P"] + " / kW")
cbar(fig, ax, h, "样本数")
save(fig, "02_六边形分箱", "02_六边形分箱_光伏出力与辐照度")
def hb_03():
"""谐波幅值与相位的密度分布。"""
fig, ax = new_fig(left=0.19, bottom=0.21, right=0.86)
rng = np.random.default_rng(203)
a = rng.gamma(3.2, 5.4, 24000)
ph = rng.vonmises(0.6, 1.4, 24000) * 180 / np.pi
h = ax.hexbin(a, ph, gridsize=30, cmap=CMAP_SEQ, mincnt=1, linewidths=0.1)
ax.set_xlabel("5 次谐波幅值 " + IT["I"] + SUB["h"] + " / A")
ax.set_ylabel("谐波相位 / (°)")
cbar(fig, ax, h, "样本数")
save(fig, "02_六边形分箱", "02_六边形分箱_谐波幅值与相位")
def hb_04():
"""电机转速—转矩大样本工作点分布。"""
fig, ax = new_fig(left=0.19, bottom=0.21, right=0.86)
rng = np.random.default_rng(204)
n = rng.normal(1750, 320, 28000)
tq = np.clip(78 - 0.021 * (n - 1750) + rng.normal(0, 12, 28000), 0, None)
h = ax.hexbin(n, tq, gridsize=33, cmap=CMAP_SEQ, mincnt=1, linewidths=0.1)
ax.set_xlabel("转速 " + IT["n"] + " / (r/min)")
ax.set_ylabel("转矩 " + IT["T"] + " / (N·m)")
cbar(fig, ax, h, "样本数")
save(fig, "02_六边形分箱", "02_六边形分箱_电机工作点密度")
def hb_05():
"""电压偏差与三相不平衡度的密度。"""
fig, ax = new_fig(left=0.19, bottom=0.21, right=0.86)
rng = np.random.default_rng(205)
d = rng.normal(0.8, 2.6, 26000)
ub = np.abs(rng.gamma(4.2, 0.36, 26000)) + 0.05 * np.abs(d)
h = ax.hexbin(d, ub, gridsize=32, cmap=CMAP_SEQ, mincnt=1, linewidths=0.1)
ax.axvline(7, color=C2, lw=0.7, ls="--")
ax.axhline(2.0, color=C2, lw=0.7, ls=":")
ax.set_xlabel("电压偏差 / %")
ax.set_ylabel("电压不平衡度 / %")
cbar(fig, ax, h, "样本数")
save(fig, "02_六边形分箱", "02_六边形分箱_电压偏差与不平衡度")
说明
- 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的二级/三级标题承担。
- 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。
浙公网安备 33010602011771号