Подтвердить что ты не робот

Как создать функцию шага с помощью Matplotlib в Python?

Это должно быть легко, но я только начал заниматься с matplotlib и python. Я могу сделать строку или график рассеяния, но я не уверен, как сделать простую функцию шага. Любая помощь очень ценится.

x = 1,2,3,4
y = 0.002871972681775004, 0.00514787917410944, 0.00863476098280219, 0.012003316194034325
4b9b3361

Ответ 1

Кажется, что вы хотите step.

например.

import matplotlib.pyplot as plt

x = [1,2,3,4] 
y = [0.002871972681775004, 0.00514787917410944, 
     0.00863476098280219, 0.012003316194034325]

plt.step(x, y)
plt.show()

enter image description here

Ответ 2

Если у вас есть неравномерно расположенные точки данных, вы можете использовать drawstyle аргумент ключевого слова для plot:

x = [1,2.5,3.5,4] 
y = [0.002871972681775004, 0.00514787917410944, 
     0.00863476098280219, 0.012003316194034325]

plt.plot(x, y, drawstyle='steps-pre')

Также доступны steps-mid и steps-post.

Ответ 3

Просто нарисуйте две строки, одну в y = 0 и одну в y = 1, отрезав любой x для вашей функции шага?

например. если вы хотите перейти от 0 до 1 в x=2.3 и построить график от x=0 до x=5:

import matplotlib.pyplot as plt
#                                 _
# if you want the vertical line _|
plt.plot([0,2.3,2.3,5],[0,0,1,1])
#
# OR:
#                                       _
# if you don't want the vertical line _
#plt.plot([0,2.3],[0,0],[2.3,5],[1,1])

# now change the y axis so we can actually see the line
plt.ylim(-0.1,1.1)

plt.show()

Ответ 4

Я думаю, что вы хотите pylab.bar(x,y,width=1) или равно pyplot bar. если не проверить gallery для многих типов графиков, которые вы можете сделать. Каждое изображение поставляется с примером кода, показывающим, как сделать это с помощью matplotlib.

Ответ 5

Если кто-то просто хочет ухаживать за некоторыми данными, а не на самом деле зарисовывать его:

def get_x_y_steps(x, y, where="post"):
    if where == "post":
        x_step = [x[0]] + [_x for tup in zip(x, x)[1:] for _x in tup]
        y_step = [_y for tup in zip(y, y)[:-1] for _y in tup] + [y[-1]]
    elif where == "pre":
        x_step = [_x for tup in zip(x, x)[:-1] for _x in tup] + [x[-1]]
        y_step = [y[0]] + [_y for tup in zip(y, y)[1:] for _y in tup]
    return x_step, y_step