首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想平滑我的python matplotlib图,代码不工作

我想平滑我的python matplotlib图,代码不工作
EN

Stack Overflow用户
提问于 2018-06-08 05:06:27
回答 1查看 186关注 0票数 0

从scipy.interpolate导入样条线导入matplotlib.pyplot作为plt导入numpy作为np导入sys

代码语言:javascript
运行
复制
    filename = sys.argv[1]

    I take data from a file, y=time,x=distance
    load it into 2 numpy arrays x and y
    x,y=np.loadtxt(filename, delimiter=',', unpack=True)
    dydx=np.zeros([1,len(x)],dtype = float)
    zero =  np.array(np.zeros(5))
    xdiff = np.array([0,len(x)-1],dtype = float)
    ydiff = np.array([0,len(x)-1],dtype = float)
    xdiff = np.diff(x)

    ydiff = np.diff(y)
    dydx = np.divide(np.diff(x),np.diff(y))
    plt.ylabel("Velocity")
    plt.xlabel("Time")

    a = np.linspace(y[0],y[len(y)-1],len(y))
    dydx = np.append(dydx, zero[0])

我得到的图仍然是尖锐的,不平滑的。

这是我做的一些事情,以平滑情节,但没有奏效,仍然尖锐

代码语言:javascript
运行
复制
a_smooth = np.linspace(a.min(),a.max(),len(y))
dydx_smooth = spline(a,dydx,a_smooth)

这是正常的绘图过程

代码语言:javascript
运行
复制
plt.plot(a_smooth,dydx_smooth)
plt.grid()
plt.show()

我试着使用splrev,splrep,但结不是不减的,dydx不断地上下浮动,所以不能使用。我在youtube的视频中看到了这个技巧,它对他有效,但对我不起作用。https://www.youtube.com/watch?v=uSB8UBrbMfk

您可以从此处https://pastebin.com/44Kn2sm5获取我的输入数据

EN

回答 1

Stack Overflow用户

发布于 2018-06-08 16:21:55

您可以通过pandas以一种非常简单方便的方式过滤数据。

我无法访问您的在线数据存储,所以我自己制作了一些样本数据,如果可以的话…

代码语言:javascript
运行
复制
import pandas as pd

x = np.linspace(0,25000,1000)
y = np.sin(np.linspace(0,25*np.pi,1000))*(1.2+np.cos(np.arange(-200,800)/45/4/2))+np.random.random(1000)

df = pd.DataFrame({'y': y}, index=x)
plt.plot(df)
plt.plot(df, label='raw data')
plt.plot(df.rolling(10, Center=True).mean(), label='filtered by rolling mean size 10')
plt.legend()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50750146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档