本程序实现从txt文件中读取两列数据,然后进行三次样条插值,绘制出一条平滑的曲线。
需要解决的一些问题:
切片方法:
x = a[:,0] # 取第一列数据
y = a[:,1] # 取第二列数据
另外一种使用 pandas 切片的方法:
</qq_41365597/article/details/90676249>
插值方法介绍:<SciPy v1.3.0 Reference Guide>
# code:utf-8 Ubuntuimport matplotlib.pyplot as pltfrom scipy import interpolateimport numpy as npimport matplotlib.font_manager as mptzhfont=mpt.FontProperties(fname='/usr/share/fonts/custom/msyh.ttf') #显示中文字体#导入数据file = 'data.txt'a = np.loadtxt(file)# 数组切片x = a[:,0] # 取第一列数据y = a[:,1] # 取第二列数据# 进行样条插值tck = interpolate.splrep(x,y)xx = np.linspace(min(x),max(x),100)yy = interpolate.splev(xx,tck,der=0)print(xx)# 画图plt.plot(x,y,'o',xx,yy)plt.legend(['true','Cubic-Spline'])plt.xlabel('距离(cm)', fontproperties=zhfont) #注意后面的字体属性plt.ylabel('%')plt.title('管线仪实测剖面图', fontproperties=zhfont) # 保存图片 plt.savefig('out.jpg')plt.show()
data.txt
093309660849084120481503818051210572404027045300503307536080390604207245067480715107540745706360069
结果