美文网首页
python学习之曲线图

python学习之曲线图

作者: 青青_fd08 | 来源:发表于2021-08-11 13:30 被阅读0次

    作为一个没话语权的甲方,感觉要被乙方和用户逼死~~~


    哭.png

    首先事情是这样的:用户提了一个需求,里面需要4个点连成一条曲线,乙方觉得4个点怎么连曲线,给我100个点我再试试看咯,并要求我们给出曲线公式。那问题来了,这个曲线弧度多大,用户不知道公式啊。只知道要平滑连接~~于是就引发本次的学习之路
    第一步,怎么也要先把线连起来吧,是不是曲线不管:

    import numpy as np
    import math
    import matplotlib.pyplot as plt
    x1=[1,2,3,4]
    y1=[3,3.2,2.1,4]
    #定义x轴范围,点数个数
    a=np.linspace(min(x1),max(x1),100)
    #用插值函数,计算纵坐标的值
    b=np.interp(a,x1,y1)
    plt.plot(x1, y1, 'o')  #蓝色的点
    plt.plot(a,b, color='r')
    plt.show()
    
    折线.png

    那这折线有了怎么变成曲线?众所周知,曲线其实就是很多点连起来,点多了看上去就平滑了,于是我去百度了一波,看了一下别人画的曲线

    import numpy as np
    import matplotlib.pyplot as plt
    
    #定义X轴范围,坐标-4到4,点数1024个
    x1 = np.linspace(-4,4, 1024)
    y1 = .25 * (x1 + 4.) * (x1 + 1.) * (x1 - 2.)
    #plt.plot(x1, y1,'o')
    plt.plot(x1, y1,'r')
    plt.xlabel('x', fontsize=12)
    plt.ylabel('y', fontsize=12)
    plt.show()
    
    曲线.png

    曲线是曲线,但是我不能用啊,这是按照公式走的图,并不会过我指定的点。


    表情.png

    后来查资料看到了scipy库,感觉发现了新大陆,interp1d函数可以直接拟合数值,这结合一下,岂不是美滋滋?

    import numpy as np
    # 实现插值的模块
    from scipy import interpolate
    # 画图的模块
    import matplotlib.pyplot as plt
    # 生成随机数的模块
    import random
    
    
    x=[1,2,3,4]
    y=[3,3.2,2.1,8]
    
    
    a=np.linspace(min(x),max(x),1000)
    #b=np.interp(a,x,y)
    """
    kind方法:
    nearest、zero、slinear、quadratic、cubic
    实现函数func
    """
    #func = interpolate.interp1d(x, y, kind='cubic')
    #cubic和quadratic画出来弧度不一样,取需哈
    func = interpolate.interp1d(x, y, kind='quadratic')
    b=func(a)
    # 画图部分
    # 原图
    plt.plot(x, y, 'o')
    # 拟合之后的平滑曲线图
    plt.plot(a, b,'r')
    plt.show()
    
    image.png

    相关文章

      网友评论

          本文标题:python学习之曲线图

          本文链接:https://www.haomeiwen.com/subject/brzqbltx.html