Построение ступенчатой ​​(кусочной) функции вертикальными линиями

Попытка построить сигнальную функцию 0 и 1, очень похожую на решение, данное на вопрос ниже: Как отображать нечисловые данные в Matplotlib

Однако я хотел бы иметь вертикальные линии вместо изогнутых, когда функция переходит от 0 к 1. Так, например, если f(x)=0 для x = 1 2 3 4 и f(x) = 1 после этого, я мне нужна горизонтальная линия от y=0 до x=5, вертикальная линия от x=5, идущая от y=0 до y=1, а затем горизонтальная линия от y=1

Можно ли это сделать в функции plot? Или мне нужно нарисовать тонну квадратов?

Спасибо!


person alex314159    schedule 14.11.2011    source источник


Ответы (2)


Пробовали ли вы использовать функцию лестницы?

person kol    schedule 14.11.2011
comment
На самом деле у меня был вопрос о matplotlib - не знаю, почему matlab стал ключевым словом. Но вы все равно указали мне правильное направление, когда я искал эквивалент «лестницы» в matplotlib. Решение: drawstyle='steps' в аргументе plot - person alex314159; 14.11.2011
comment
@user1045479: проверьте это: sourceforge.net/mailarchive/message.php?msg_id=27036226 - person Amro; 14.11.2011

Вы можете использовать лестницы или область. Как показано здесь:

%# Sample input
x = 1:10;
y = [0 0 0 0 1 1 1 1 1 1];

subplot(2,1,1)
stairs(x,y)
title('Stairs chart (non area)')

subplot(2,1,2)
x = [x;x];
y = [y;y];
area(x([2:end end]),y(1:end))
title('Stairs area')

Лестницы с площадью

person petrichor    schedule 14.11.2011