Ответ 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()
Это должно быть легко, но я только начал заниматься с matplotlib и python. Я могу сделать строку или график рассеяния, но я не уверен, как сделать простую функцию шага. Любая помощь очень ценится.
x = 1,2,3,4
y = 0.002871972681775004, 0.00514787917410944, 0.00863476098280219, 0.012003316194034325
Кажется, что вы хотите 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()
Если у вас есть неравномерно расположенные точки данных, вы можете использовать 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
.
Просто нарисуйте две строки, одну в 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()
Я думаю, что вы хотите pylab.bar(x,y,width=1)
или равно pyplot
bar. если не проверить gallery для многих типов графиков, которые вы можете сделать. Каждое изображение поставляется с примером кода, показывающим, как сделать это с помощью matplotlib.
Если кто-то просто хочет ухаживать за некоторыми данными, а не на самом деле зарисовывать его:
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