Python:如何在图表中获得更平滑的起点?

时间:2018-05-01 23:57:51

标签: python pandas numpy matplotlib

我想得的是点(x, y),其中y值对于给定的x和y值变得更平滑。

例如,

x = range(10)
y = [0.3, 0.37, 0.41, 0.52, 0.64, 0.68, 0.71, 0.72, 0.73, 0.74]
plt.plot(x, y)

std::chrono::steady_clock

我希望获得图表开始稳定的红色圆点(或接近点)。

我该怎么做?

enter image description here

1 个答案:

答案 0 :(得分:5)

您正在寻找的是斜率或更准确的一阶差异,以便了解曲线开始平滑的位置,您可以计算出第一阶差异/斜率并找出第一个斜率低于某个阈值的指数:

import matplotlib.pyplot as plt
import numpy as np

x = np.array(range(10))
y = np.array([0.3, 0.37, 0.41, 0.52, 0.64, 0.68, 0.71, 0.72, 0.73, 0.74])

slopes = np.diff(y) / np.diff(x)
idx = np.argmax(slopes < 0.02)  # find out the first index where slope is below a threshold

fig, ax = plt.subplots()

ax.plot(x, y)
ax.scatter(x[idx], y[idx], s=200, facecolors='none', edgecolors='r')

enter image description here