Python-用PyPlot绘制平滑线

发布于 2021-02-02 23:09:39

我有以下绘制图形的简单脚本:

import matplotlib.pyplot as plt
import numpy as np

T = np.array([6, 7, 8, 9, 10, 11, 12])
power = np.array([1.53E+03, 5.92E+02, 2.04E+02, 7.24E+01, 2.72E+01, 1.10E+01, 4.70E+00])

plt.plot(T,power)
plt.show()

就目前而言,这条线从一条直线到另一条直线看起来不错,但在我看来可能会更好。我想要的是使两点之间的线变得平滑。在Gnuplot中,我会用绘制smooth cplines

在PyPlot中有一种简单的方法吗?我找到了一些教程,但是它们看起来都相当复杂。

关注者
0
被浏览
67
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你可以scipy.interpolate.spline自己整理数据:

    from scipy.interpolate import spline
    
    # 300 represents number of points to make between T.min and T.max
    xnew = np.linspace(T.min(), T.max(), 300)  
    
    power_smooth = spline(T, power, xnew)
    
    plt.plot(xnew,power_smooth)
    plt.show()
    

    scipy 0.19.0中不推荐使用spline,请改用BSpline类。

    从切换splineBSpline复制并不是简单的复制/粘贴操作,需要进行一些调整:

    from scipy.interpolate import make_interp_spline, BSpline
    
    # 300 represents number of points to make between T.min and T.max
    xnew = np.linspace(T.min(), T.max(), 300) 
    
    spl = make_interp_spline(T, power, k=3)  # type: BSpline
    power_smooth = spl(xnew)
    
    plt.plot(xnew, power_smooth)
    plt.show()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看