# 修改图表标题和标签为英文
def plot_power_balance(self):
"""绘制功率平衡曲线"""
fig, ax1 = plt.subplots(figsize=(12, 5))
# 负荷侧
ax1.stackplot(range(24),
self.results['P_con'],
[self.P_fixed] * 24,
labels=['Conventional Load', 'Fixed Load (H2/NH3)'],
alpha=0.8)
ax1.plot(range(24), self.results['P_load'], 'k-', lw=2, label='Total Load')
ax1.set_ylabel('Power (MW)', fontsize=12)
ax1.set_xlabel('Time (h)', fontsize=12)
# 电源侧
ax2 = ax1.twinx()
ax2.stackplot(range(24),
self.results['P_wind'],
self.results['P_pv'],
labels=['Wind Power', 'PV Power'],
alpha=0.8)
ax2.plot(range(24), self.results['P_ren'], 'b--', lw=2, label='Total Renewable')
ax2.set_ylabel('Power (MW)', fontsize=12)
# 合并图例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left', fontsize=10)
plt.title('Typical Day Power Balance Curve', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()
IyDkv67mlLnlm77ooajmoIfpopjlkozmoIfnrb7kuLroi7HmlocKZGVmIHBsb3RfcG93ZXJfYmFsYW5jZShzZWxmKToKICAgICIiIue7mOWItuWKn+eOh+W5s+ihoeabsue6vyIiIgogICAgZmlnLCBheDEgPSBwbHQuc3VicGxvdHMoZmlnc2l6ZT0oMTIsIDUpKQogICAgCiAgICAjIOi0n+iNt+S+pwogICAgYXgxLnN0YWNrcGxvdChyYW5nZSgyNCksIAogICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0c1snUF9jb24nXSwgCiAgICAgICAgICAgICAgICAgW3NlbGYuUF9maXhlZF0gKiAyNCwKICAgICAgICAgICAgICAgICBsYWJlbHM9WydDb252ZW50aW9uYWwgTG9hZCcsICdGaXhlZCBMb2FkIChIMi9OSDMpJ10sCiAgICAgICAgICAgICAgICAgYWxwaGE9MC44KQogICAgYXgxLnBsb3QocmFuZ2UoMjQpLCBzZWxmLnJlc3VsdHNbJ1BfbG9hZCddLCAnay0nLCBsdz0yLCBsYWJlbD0nVG90YWwgTG9hZCcpCiAgICBheDEuc2V0X3lsYWJlbCgnUG93ZXIgKE1XKScsIGZvbnRzaXplPTEyKQogICAgYXgxLnNldF94bGFiZWwoJ1RpbWUgKGgpJywgZm9udHNpemU9MTIpCiAgICAKICAgICMg55S15rqQ5L6nCiAgICBheDIgPSBheDEudHdpbngoKQogICAgYXgyLnN0YWNrcGxvdChyYW5nZSgyNCksIAogICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0c1snUF93aW5kJ10sIAogICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0c1snUF9wdiddLAogICAgICAgICAgICAgICAgIGxhYmVscz1bJ1dpbmQgUG93ZXInLCAnUFYgUG93ZXInXSwKICAgICAgICAgICAgICAgICBhbHBoYT0wLjgpCiAgICBheDIucGxvdChyYW5nZSgyNCksIHNlbGYucmVzdWx0c1snUF9yZW4nXSwgJ2ItLScsIGx3PTIsIGxhYmVsPSdUb3RhbCBSZW5ld2FibGUnKQogICAgYXgyLnNldF95bGFiZWwoJ1Bvd2VyIChNVyknLCBmb250c2l6ZT0xMikKICAgIAogICAgIyDlkIjlubblm77kvosKICAgIGxpbmVzMSwgbGFiZWxzMSA9IGF4MS5nZXRfbGVnZW5kX2hhbmRsZXNfbGFiZWxzKCkKICAgIGxpbmVzMiwgbGFiZWxzMiA9IGF4Mi5nZXRfbGVnZW5kX2hhbmRsZXNfbGFiZWxzKCkKICAgIGF4MS5sZWdlbmQobGluZXMxICsgbGluZXMyLCBsYWJlbHMxICsgbGFiZWxzMiwgbG9jPSd1cHBlciBsZWZ0JywgZm9udHNpemU9MTApCiAgICAKICAgIHBsdC50aXRsZSgnVHlwaWNhbCBEYXkgUG93ZXIgQmFsYW5jZSBDdXJ2ZScsIGZvbnRzaXplPTE0LCBmb250d2VpZ2h0PSdib2xkJykKICAgIHBsdC50aWdodF9sYXlvdXQoKQogICAgcGx0LnNob3coKQ==