01 折线图 plot
用途
时序趋势的标准画法,电压、电流、负荷、出力随时间变化都用它,是电气最基础的一张图。
示例(5 张)
01-1 母线电压日曲线:三条馈线 24 h 电压

01-2 馈线短路故障三相电流录波

01-3 典型日负荷曲线:工作日、周末、节假日

01-4 光伏电站日出力:晴、多云、阴三种天气

01-5 储能电站日充放电功率(正为放电、负为充电)

代码
以下 5 个函数取自 code/第一批_基础图型261106.py,直接调用即可出图。版式(宋体 + Times、10 磅、刻度朝内四边、图内无标题、留白自检)由 code/公共配置261106.py 的 setup_cn_style() 与 save() 统一提供。
# 摘自 code/第一批_基础图型261106.py
def line_01():
"""母线电压日曲线:三条馈线 24 h 电压。"""
fig, ax = new_fig()
t = np.arange(0, 24.01, 0.5)
u1 = 10.15 + 0.16 * np.sin((t - 6) / 24 * 2 * np.pi) + 0.02 * np.cos(t)
u2 = 10.02 + 0.11 * np.sin((t - 5) / 24 * 2 * np.pi)
u3 = 9.93 + 0.09 * np.sin((t - 7) / 24 * 2 * np.pi) - 0.02 * np.cos(t / 2)
for i, (y, nm) in enumerate([(u1, "Ⅰ 段母线"), (u2, "Ⅱ 段母线"), (u3, "Ⅲ 段母线")]):
ax.plot(t, y, color=COLORS[i], ls=LINES[i], marker=MARKERS[i],
markevery=6, ms=3, lw=1.0, label=nm)
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("母线电压 " + IT["U"] + " / kV")
ax.set_xlim(0, 24)
ax.set_ylim(9.74, 10.66)
legend(ax, "upper center", ncol=3)
save(fig, "01_折线", "01_折线_母线电压日曲线")
def line_02():
"""馈线短路故障三相电流录波。"""
fig, ax = new_fig()
t = np.linspace(0, 100, 600)
base = 380 * np.sin(2 * np.pi * 50 * t / 1000)
for i in range(3):
sig = base.copy()
mask = t > 40
sig[mask] = 380 * 2.8 * np.sin(2 * np.pi * 50 * t[mask] / 1000 - i * 2.09) \
* np.exp(-(t[mask] - 40) / 55)
ax.plot(t, sig, color=COLORS[i], ls=LINES[i], lw=1.0, label=f"{'ABC'[i]} 相")
ax.axvline(40, color=C4, lw=0.5, ls=":", label="故障时刻")
ax.set_xlabel("时间 " + IT["t"] + " / ms")
ax.set_ylabel("相电流 " + IT["I"] + " / A")
ax.set_xlim(0, 100)
ax.set_ylim(-1450, 2100)
legend(ax, "upper center", ncol=2)
save(fig, "01_折线", "01_折线_馈线故障电流录波")
def line_03():
"""典型日负荷曲线:工作日、周末、节假日。"""
fig, ax = new_fig()
t = np.arange(0, 24.01, 1.0)
work = 520 + 190 * np.exp(-((t - 10) / 3.2) ** 2) + 240 * np.exp(-((t - 15) / 2.6) ** 2)
week = 430 + 110 * np.exp(-((t - 11) / 3.6) ** 2) + 130 * np.exp(-((t - 16) / 3.0) ** 2)
holi = 360 + 70 * np.exp(-((t - 12) / 4.2) ** 2) + 60 * np.exp(-((t - 18) / 3.4) ** 2)
for i, (y, nm) in enumerate([(work, "工作日"), (week, "周末"), (holi, "节假日")]):
ax.plot(t, y, color=COLORS[i], ls=LINES[i], marker=MARKERS[i],
markevery=3, ms=3, lw=1.0, label=nm)
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("有功负荷 " + IT["P"] + " / kW")
ax.set_xlim(0, 24)
ax.set_ylim(300, 900)
legend(ax, "upper center", ncol=3)
save(fig, "01_折线", "01_折线_典型日负荷曲线")
def line_04():
"""光伏电站日出力:晴、多云、阴三种天气。"""
fig, ax = new_fig()
t = np.arange(5, 20.01, 0.5)
clear = 1000 * np.sin((t - 5) / 15 * np.pi) ** 1.35
cloud = clear * (0.55 + 0.35 * np.sin(t * 1.3))
over = clear * 0.22
for i, (y, nm) in enumerate([(clear, "晴天"), (cloud, "多云"), (over, "阴天")]):
ax.plot(t, y, color=COLORS[i], ls=LINES[i], marker=MARKERS[i],
markevery=4, ms=3, lw=1.0, label=nm)
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("有功出力 " + IT["P"] + " / kW")
ax.set_xlim(5, 20)
ax.set_ylim(-60, 1300)
legend(ax, "upper center", ncol=3)
save(fig, "01_折线", "01_折线_光伏电站日出力")
def line_05():
"""储能电站日充放电功率(正为放电、负为充电)。"""
fig, ax = new_fig()
t = np.arange(0, 24.01, 0.5)
p = np.where((t >= 1) & (t < 7), -180, 0) + np.where((t >= 18) & (t < 22), 150, 0)
p = p + 12 * np.sin(t / 2)
ax.plot(t, p, color=C1, lw=1.0, marker="o", markevery=6, ms=3, label="储能功率")
ax.axhline(0, color=C4, lw=0.5)
ax.fill_between(t, p, 0, where=p > 0, color=C3, alpha=0.35, linewidth=0, label="放电")
ax.fill_between(t, p, 0, where=p < 0, color=C5, alpha=0.45, linewidth=0, label="充电")
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("有功功率 " + IT["P"] + " / kW")
ax.set_xlim(0, 24)
ax.set_ylim(-250, 290)
legend(ax, "upper center", ncol=3)
save(fig, "01_折线", "01_折线_储能日充放电功率")
说明
- 图片 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的标题承担。
- 数据为 10 kV 配网、380 V 低压、50 Hz 量级的仿真算例,随机种子固定,重跑结果一致。
浙公网安备 33010602011771号