我想画一条趋势线,它很好地跟随几个点。它应该是一种“平均值”,所以它不必精确击中点,但形状必须是一个平滑的弧线。我很难让Python或Excel得到我想要的东西。这是我正在使用的一个示例代码,
x = np.array([6,8,10,12,16,24,32])
y = np.array([934,792,744,710,699,686,681])
#create scatterplot
plt.scatter(x, y)
#calculate equation for quadratic trendline
z = np.polyfit(x, y, 2)
p = np.poly1d(z)
#add trendline to plot
plt.plot(x, p(x))
它给出了一个类似
的输出
而我要找的是像
这样的东西,这是另一个例子,这里的线更尖锐,不像前面的
那样触底
有人知道这是怎么做到的吗?当我在Excel上尝试它时,似乎需要一个“等式”,但我不知道如何获得这个等式。
编辑:我正在寻找的曲线必须是单调递减和凹
1条答案
按热度按时间nfzehxib1#
若要拟合具有所需形状的曲线,请使用
scipy.optimize.curve_fit
。由于需要通用的1/x
曲线,可以使用a/(x+b) + c
,其中a
调整曲率,b
调整左右位置,c
调整上下位置。您可以使用this Desmos图查看这些参数如何更改形状。