首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的Excel样内插

Python中的Excel样内插
EN

Stack Overflow用户
提问于 2017-04-16 10:06:28
回答 1查看 1.3K关注 0票数 1

用光滑的线条和标记将我的数据在excel中绘制成散点图,生成我所期望的图形类型。Excel绘图图像:

然而,当试图用matplotlib绘制数据时,我遇到了一些插值问题。我正在使用来自SciPy的插补包,我尝试了一系列不同的插值方法,包括样条插值与BarycentricInterpolator作为以前的建议。然而,这些情节显然与excel制作的情节非常不同:

对于样条插值,我尝试过不同的平滑和k值,而曲线变化的根源问题仍然存在。

我怎样才能产生一条拟合的曲线,类似于excel制作的情节?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-16 13:17:31

问题是,你在线性尺度上插值数据,但期望结果在对数尺度上看起来是平滑的。

因此,这个想法是先将数据转换为对数,然后再执行插值,从而在日志尺度上执行插值。然后,您可以将其转换回线性刻度,这样您就可以再次在日志比例尺上绘制它。

代码语言:javascript
复制
from scipy.interpolate import interp1d, Akima1DInterpolator
import numpy as np
import matplotlib.pyplot as plt

x = np.array([0.02,0.2,2,20,200])
y = np.array([700,850,680,410, 700])
plt.plot(x,y, marker="o", ls="")

sx=np.log10(x)
xi_ = np.linspace(sx.min(),sx.max(), num=201)
xi = 10**(xi_)

f = interp1d(sx,y, kind="cubic")
yi = f(xi_)
plt.plot(xi,yi, label="cubic spline")

f2 = Akima1DInterpolator(sx, y)
yi2 = f2(xi_)
plt.plot(xi,yi2, label="Akima")


plt.gca().set_xscale("log")
plt.legend()
plt.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43436035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档