You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib双Y轴图表仅显轴标签无数据的问题排查与解决

解决Matplotlib双Y轴图表无数据曲线问题

问题场景

我需要用Matplotlib绘制双Y轴图表,展示净功率(Net Power)、供电户数与汽轮机峰值温度的关联,以此分析特定质量流量、高低压参数及蒸汽品质下的汽轮机性能。数组已完成赋值,但运行初始代码后,图表仅显示正确的轴标签,完全没有数据曲线。

问题排查

一开始尝试手动设置坐标轴范围,问题依旧。后来检查代码发现核心错误:错误地将ax1.plot、ax2.plot赋值为元组,而非调用plot()方法来绘制曲线。

代码对比

初始错误代码

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()

# 错误写法:将plot赋值为元组,未实际调用绘图方法
ax1.plot = (temp_array, net_power_array, 'b-', label='Net Power')
ax1.set_xlabel('Turbine Peak Temperature (°C)')
ax1.set_ylabel('Net Power (MW)', color='b')

ax2 = ax1.twinx()
ax2.plot = (temp_array, households_array, 'r-', label='Households Supplied')
ax2.set_ylabel('Number of Households', color='r')

plt.title('Turbine Performance Analysis')
plt.legend()
plt.show()

数组填充代码

# 示例数组赋值(根据实际业务逻辑填充)
temp_array = [500, 550, 600, 650, 700]
net_power_array = [120, 145, 170, 190, 205]
households_array = [24000, 29000, 34000, 38000, 41000]

修正后的最终代码

import matplotlib.pyplot as plt

# 数组赋值
temp_array = [500, 550, 600, 650, 700]
net_power_array = [120, 145, 170, 190, 205]
households_array = [24000, 29000, 34000, 38000, 41000]

fig, ax1 = plt.subplots(figsize=(10,6))

# 正确调用plot()方法绘制曲线
line1, = ax1.plot(temp_array, net_power_array, 'b-', label='Net Power')
ax1.set_xlabel('Turbine Peak Temperature (°C)')
ax1.set_ylabel('Net Power (MW)', color='b')
ax1.tick_params(axis='y', labelcolor='b')

ax2 = ax1.twinx()
line2, = ax2.plot(temp_array, households_array, 'r-', label='Households Supplied')
ax2.set_ylabel('Number of Households', color='r')
ax2.tick_params(axis='y', labelcolor='r')

# 合并图例
plt.title('Turbine Performance Analysis')
lines = [line1, line2]
ax1.legend(lines, [line.get_label() for line in lines])

plt.tight_layout()
plt.show()

修正后效果

图表成功显示两条数据曲线:蓝色曲线对应净功率随汽轮机峰值温度的变化,红色曲线对应供电户数的变化,双Y轴标签与数据匹配,能直观分析汽轮机性能关联关系。

内容的提问来源于stack exchange,提问作者Tman01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:24:27