援引文章:https://mp.weixin.qq.com/s/XC9lJVyEh8e2anQbRaqzJA
    源数据地址:https://github.com/PlantNutrition/Liyu
    改写后的 Python 代码:
    figure2e.ipynb

    原文用的是 R 语言进行绘制,本文用 Python 语言配合Matplotlib库进行绘制。
    使用原始数据画出来折线图长这个样:
    python-plain.svg

    Python 绘制原始折线图

    经过平滑后画出来的是这个样:
    python-smooth.svg

    Python 绘制平滑后的曲线图

    实际上平滑是通过插值进行的。原文使用的是 spline 样条插值,在 Python 中可以使用scipy模块下interpolate包的make_interp_spline即可:

    1. import numpy as np
    2. from scipy.interpolate import make_interp_spline
    3. import matplotlib.pyplot as plt
    4. x=np.array([1,2,3,4,5,6,7])
    5. y=np.array([100,50,25,12.5,6.25,3.125,1.5625])
    6. model=make_interp_spline(x, y)
    7. xs=np.linspace(1,7,500)
    8. ys=model(xs)
    9. plt.plot(xs, ys)
    10. plt.title("Smooth Spline Curve")
    11. plt.xlabel("X")
    12. plt.ylabel("Y")
    13. plt.show()

    代码和结果图直接摘自以为 CSDN 博主的文章
    image.png

    scipy 模块插值示例图

    其余部分,详见本文开头的 jupyter notebook 代码。