我在matplotlib中看到了一些关于步骤函数的问题,但这个问题有所不同。 这是我的功能:
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()
我希望在放置JerkFunction([1,1,-1,1])
时获得曲线,但输入:[1,-1,1,-1]
,实际上,在开头,在实际情况下,加加速度值为0且在{{1它变为t=0
,然后在jerk=+1
1变为t=
等。
答案 0 :(得分:5)
我认为你遇到了同样的问题Matlibplot step function index 0。您遇到的问题与步骤更改值相对于x值(doc)的位置有关。
以下演示了它可以做到的三种方式。为清楚起见,曲线垂直移动。水平虚线为“零”,垂直虚线为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()
答案 1 :(得分:0)
目前尚不清楚你想要做什么,但我认为这可能会产生你正在寻找的情节。如果这不是您想要的,那么更容易为您提供更多信息。
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()