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

PyCharm中Matplotlib绘制X_e-z曲线无折线显示问题求助

解决matplotlib绘图空白问题的方案

问题原因

你的代码在循环中每次调用plt.plot(X_e, z)时,仅绘制单个离散点,而matplotlib默认的折线模式需要至少两个连续点才能生成可见线条,单个点不会被渲染,因此画布显示空白。此外,循环逐点绘图的方式效率极低,也不符合numpy的最佳实践。

修复方案

优化思路

  1. 预先生成所有z值的数组,利用numpy的向量化计算批量求解X_e,避免循环。
  2. 一次性调用绘图函数生成连续曲线,而非逐点绘制。

修改后的代码

import numpy as np
import matplotlib.pyplot as plt

case=int(input('Which Case [1 (PWR) or 2 (BWR)]? '))

if case == 1: # PWR
    H = 3.80 # m
    Lc = 3.80 # m
    D_rod = 0.0095 # m
    pitch = 0.0125 # m

    G = 3460 # kg/m^2-s
    q_0 = 33000 # W/m - Linear heat rate
    P_0 = 15 # MPa - Initial pressure
    T_f_in = 551 # Kelvin - Inlet temperature
    T_sat = 373 # Kelvin
    cp = 4.22 # kJ/kg
    hfg = 2256.4 # kJ/kg

    heated_parameter = np.pi * D_rod # 用numpy内置π提高精度
    area = pitch**2 - 0.25 * np.pi * D_rod**2 # m^2
    circumference = np.pi * D_rod # 简化计算:2πr = πD

    # 生成所有z值的数组
    z = np.arange(0, 3.8, 0.001)
    # 向量化计算X_e,无需循环
    X_e = - q_0 * heated_parameter / (G * circumference * area * hfg) * H/np.pi * np.cos(np.pi * z/H) - cp * (T_sat - T_f_in)/hfg

    # 一次性绘制连续曲线,X_e为横轴,z为纵轴
    plt.plot(X_e, z, linewidth=1)
    # 添加坐标轴标签和标题,提升可读性
    plt.xlabel('X_e')
    plt.ylabel('z (m)')
    plt.title('X_e vs z')
    plt.grid(True)
    plt.show()

关键修改点

  • 替换手动输入的3.14为np.pi,计算精度更高。
  • 用numpy数组批量生成z值并计算X_e,避免低效的循环操作。
  • 单次调用plt.plot(X_e, z)绘制连续曲线,确保线条可见。
  • 添加坐标轴标签、标题和网格,让图表信息更清晰。

额外提示

如果需要保留逐点输出验证,可以在计算完成后添加:

# 打印前5组数据验证
for i in range(5):
    print(f"z={z[i]:.3f}, X_e={X_e[i]:.6f}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:00:47