Step function in matplotlib

匿名 (未验证) 提交于 2019-12-03 00:59:01

问题:

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

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

I would like to have the curve obtained when I put JerkFunction([1,1,-1,1]) but by entering: [1,-1,1,-1], indeed, at the beginning, in a real case, the jerk value is 0 and at t=0, it becomes jerk=+1, then at t=1 it is Jerk=-1 etc.

回答1:

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



回答2:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!