如何用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
相关产品推荐
相关产品推荐

