如何调整曲线数据范围使X值适配15-30区间?
如何调整曲线数据范围使X值适配15-30区间?
嘿,我懂你要的是什么!你不是要调整画布大小(figsize确实解决不了这个问题),而是要把曲线的实际数据范围从原来的34.5-37.5左右,线性映射到15-30这个目标区间对吧?这其实是个数据缩放的问题,很容易解决,我给你一步步说:
首先核心思路是线性归一化映射——把原始X数据的区间,按比例拉伸/压缩到你想要的15-30区间,公式很简单:新X值 = (原始X值 - 原X最小值) / (原X最大值 - 原X最小值) * (目标X最大值 - 目标X最小值) + 目标X最小值
接下来直接修改你的代码就行,我把关键步骤加进去了:
import numpy as np import matplotlib.pyplot as plt import scipy # 原始数据 x5=[34.5,35.5,34.5,34.5,36.5,37.2, 37.5,36.5,36,37.5] y5=[11,12.6,11,10,11,12,12.6,11,10,10.5] t5=np.linspace(0, len(x5), num=len(x5), endpoint=True) # 三次插值部分不变 f11 = scipy.interpolate.interp1d(t5,x5, kind='cubic') f12 = scipy.interpolate.interp1d(t5,y5, kind='cubic') tnew5 = np.linspace(0, len(x5), num=100000, endpoint=True) x_interp = f11(tnew5) y_interp = f12(tnew5) # 关键:对X数据进行缩放,适配15-30区间 # 1. 计算原始X数据的极值 x_original_min = np.min(x5) x_original_max = np.max(x5) # 2. 定义目标区间 target_x_min = 15 target_x_max = 30 # 3. 线性映射到目标区间 x_scaled = (x_interp - x_original_min) / (x_original_max - x_original_min) * (target_x_max - target_x_min) + target_x_min # 绘图 plt.plot(x_scaled, y_interp, label='适配后曲线') plt.xlim(target_x_min, target_x_max) # 确保X轴只显示目标区间 plt.ylabel('Y值') plt.xlabel('X值(15-30区间)') plt.legend() plt.grid(alpha=0.3) plt.show()
这样修改后,你的曲线形状完全不变,但X轴的数值会精准落在15-30之间,完全不用碰figsize。如果你之后想调整Y轴的范围,用同样的方法处理y_interp就行,逻辑是一样的~
备注:内容来源于stack exchange,提问作者Azil559
相关产品推荐
相关产品推荐

