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

如何用Python绘制随epsilon_1、epsilon_2变化的能量增益等高线图?

解决等高线图绘制的维度问题

你的问题核心是一维数组运算得到的E无法满足contour类函数对二维输入的要求,只需将一维的epsilon_1和epsilon_2转换为二维网格,再计算对应的能量增益E即可。以下是修正后的完整代码:

import numpy as np
import matplotlib.pyplot as plt

# 生成一维数组
epsilon_1 = np.linspace(1, 25, 1000)
epsilon_2 = np.linspace(1, 25, 1000)

# 将一维数组转换为二维网格(X对应epsilon_1,Y对应epsilon_2)
X, Y = np.meshgrid(epsilon_1, epsilon_2)

# 计算二维的能量增益E
E = 0.5 * (X / Y + 1)

# 绘制等高线图
plt.figure(figsize=(8, 6))
# 使用contourf填充颜色,contour绘制等高线
contour_filled = plt.contourf(X, Y, E, cmap='viridis')
contour_lines = plt.contour(X, Y, E, colors='black', linewidths=0.5)

# 添加标注
plt.clabel(contour_lines, inline=True, fontsize=8)  # 标注等高线数值
plt.colorbar(contour_filled)  # 显示颜色条
plt.xlabel('$\epsilon_1$')
plt.ylabel('$\epsilon_2$')
plt.title('能量增益随$\epsilon_1$和$\epsilon_2$变化的等高线图')

plt.show()

关键说明:

  • np.meshgrid会把两个一维数组扩展为二维网格,X的每一行都是epsilon_1的复制,Y的每一列都是epsilon_2的复制,这样X和Y的每个元素组合对应平面上的一个坐标点。
  • 此时计算E时,X/Y是逐元素运算,得到的E是和X、Y同维度的二维数组,完全符合plt.contour/plt.contourf的输入要求。
  • 如果后续需要处理非结构化的散点数据,再考虑使用plt.tricontourf,当前场景下结构化网格的contour系列函数更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:07:09