Step function in matplotlib

前端 未结 2 489
你的背包
你的背包 2020-12-12 05:22

I have seen some questions asked about step functions in matplotlib but this one is different. Here is my function:

def JerkFunction(listOfJerk):
    \'\'\'R         


        
相关标签:
2条回答
  • 2020-12-12 05:37

    It's not clear exactly what you're trying to do, but I think this may produce the plot you are looking for. If this is not what you are looking for it will be easier to assist you with more information.

    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()
    

    Example Plot

    0 讨论(0)
  • 2020-12-12 05:50

    I think you are having the same problem this question Matlibplot step function index 0. The issue you are having is related to where step changes the value in relation to the x values (doc).

    The following demonstrates the three ways it can do this. The curves are shifted vertically for clarity. The horizontal dashed lines are 'zero' and the vertical dotted lines are your x values.

    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()
    

    example of three step location options

    0 讨论(0)
提交回复
热议问题