Paso de la función en matplotlib

He visto algunas preguntas sobre las funciones de pasos en matplotlib pero esta es diferente. Aquí está mi función:

def JerkFunction(listOfJerk): '''Return the plot of a sequence of jerk''' #initialization of the jerk x = np.linspace(0,5,4) y = listOfJerk #step signal plt.axis([0,5,-2,2]) plt.step(x,y,'y') #step display plt.xlabel('Time (s)') plt.ylabel('Jerk (m/s^3)') plt.title('Jerk produced by the engine') return plt.show() 

Me gustaría obtener la curva cuando puse JerkFunction([1,1,-1,1]) pero al ingresar: [1,-1,1,-1] , de hecho, al principio, en un caso real , el valor de jerk es 0 y en t=0 , se vuelve jerk=+1 , entonces en t= 1 es Jerk=-1 etc.

Creo que está teniendo el mismo problema esta pregunta Matlibplot paso función índice 0 . El problema que está teniendo está relacionado con el paso donde cambia el valor en relación con los valores de x ( doc ).

Lo siguiente demuestra las tres formas en que puede hacerlo. Las curvas se desplazan verticalmente para mayor claridad. Las líneas discontinuas horizontales son ‘cero’ y las líneas punteadas verticales son sus valores de x.

 x = np.linspace(0,5,3) y = np.array([1,-1,1]) fig = plt.figure() ax = fig.add_subplot(111) ax.step(x,y,color='r',label='pre') ax.step(x,y+3,color='b',label='post',where='post') ax.step(x,y+6,color='g',label='mid',where='mid') for j in [0,3,6]: ax.axhline(j,color='k',linestyle='--') for j in x: ax.axvline(j,color='k',linestyle=':') ax.set_ylim([-2,9]) ax.set_xlim([-1,6]) ax.legend() ax.draw() 

Ejemplo de opciones de ubicación de tres pasos.

No está claro exactamente lo que está intentando hacer, pero creo que esto puede producir la ttwig que está buscando. Si esto no es lo que está buscando, será más fácil ayudarlo con más información.

 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,5,4) y = [1,1,-1,1] fig = plt.figure() ax = fig.add_subplot(111) ax.step(x,y) ax.set_xlabel('Time (s)') ax.set_ylabel(r'Jerk ($m/s^3$)') ax.set_ylim((-1.5,1.5)) ax.set_title('Jerk Produced by the Engine') plt.show() 

Parcela de ejemplo