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

如何用Python数组从图表输出指定x值与y截距并设置y=0为x轴

Van der Waals方程系数计算绘图优化方案

需求实现内容

  • 计算并输出y=0时的x截距和y截距,用于后续氮气Van der Waals方程系数计算
  • 在图表中添加y=0的水平线,并将x轴移至该水平线位置(替代默认的图表底部位置)

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt

# 原始实验数据
x = np.array([0.0012, 0.0006, 0.0004, 0.0003, 0.00024, 0.0002])
y = np.array([-160, -35, -4.2, 9.0, 16.9, 21.3])

# 线性拟合数据,得到直线斜率和y截距(直线方程:y = m*x + b)
slope, y_intercept = np.polyfit(x, y, 1)

# 计算y=0时的x截距
x_intercept = -y_intercept / slope

# 打印关键参数,供后续计算使用
print(f"y=0对应的x截距:{x_intercept:.6f}")
print(f"y轴截距(x=0时的B(T)值):{y_intercept:.2f}")

# 创建绘图轴对象
fig, ax = plt.subplots()

# 绘制带标记的数据点与拟合直线
ax.plot(x, y, marker='.', markersize=10, linestyle='-', color='#1f77b4', label='实验数据')
ax.plot(x, slope*x + y_intercept, linestyle='--', color='#ff7f0e', label='拟合直线')

# 添加y=0的参考水平线
ax.axhline(y=0, color='black', linewidth=1, linestyle='-')

# 将x轴移至y=0的位置
ax.spines['bottom'].set_position(('data', 0))
# 隐藏冗余边框,优化图表视觉效果
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# 设置坐标轴标签
ax.set_xlabel('1/RT')
ax.set_ylabel('B(T)')

# 添加图例
ax.legend()

# 保存高清PDF图
plt.savefig("Van der Waals.pdf", dpi=600)
plt.show()

代码关键说明

  • 截距计算:通过np.polyfit()对数据进行一阶线性拟合,直接得到直线的斜率和y截距,再通过直线方程反推y=0时的x截距
  • 坐标轴调整:使用ax.spines['bottom'].set_position(('data', 0))将x轴绑定到y=0的位置,同时隐藏顶部和右侧边框让图表更简洁
  • 可视化优化:添加拟合直线和图例,方便对比实验数据与线性趋势,y=0的水平线清晰标记出截距位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:18:34