2012-10-30 13 views
14

Chcę plot(x, sin(x)) ale zamiast linii z (xi,yi) do (x_i+1,y_i+1) Chcę pionową linię do każdego punktu z (xi,0) do (xi,yi) jak czasami interpolacji pomiędzy punktami nie ma sensu (np skwantowane dane) (i wygląda o wiele lepiej, że pionowy linia niż bez).Działka macierzysta w matplotlib?

Podobnie jak wykres macierzystych poniżej (z dokumentacji matlab), ale z opcją wyłączenia kółek i "-" między punktami. Niestety, nie mogłem znaleźć odpowiedniej funkcji drukowania w dokumentacji Matplotlib.

stem plot

Odpowiedz

16

Jest stem plot (a.k.a. lizak działka) w matplotlib również.


Poniżej można znaleźć przykład z the docs (oczywiście nie będzie import * z pylab w rzeczywistym kodu!).

#!/usr/bin/env python 
from pylab import * 

x = linspace(0.1, 2*pi, 10) 
markerline, stemlines, baseline = stem(x, cos(x), '-.') 
setp(markerline, 'markerfacecolor', 'b') 
setp(baseline, 'color','r', 'linewidth', 2) 

show() 

stem plot


Jeśli chcesz dostosować y pozycji wyjściowej, można użyć parametru bottom. (Dokumentacja strzela tego bitu informacji.)

(dostosowane) Przykład:

#!/usr/bin/env python 
from pylab import * 

x = linspace(0.1, 2*pi, 10) 
stem(x, cos(x), '-.', bottom=-2) 

show() 

stem plot 2

+0

Dzięki, teraz muszę dowiedzieć się, jak usunąć niebieskie kółka. – arynaq

+1

@ user948652 wystarczy ustawić odpowiednio parametr 'markerfmt', np. 'markerfmt = '.''. Wystarczy rzucić okiem na dokumentację parametrów połączenia, który jest tam dobrze wyjaśniony. – moooeeeep

+0

jest jednak sposób na rozpoczęcie łodyg w ujemnej nieskończoności? Chcę coś takiego: https://namoseley.files.wordpress.com/2012/09/sin_poly_spectrum_small.png – endolith

0

myślę chcesz użyć linestyle = 'steps--'

plot(x, sin(x), linestyle='steps--') 
+0

Ten poziomy schodek wykres, nie do linii pionowej, jak w związku gif – arynaq

+0

Mój zły, myślę, że @moooeeeep ma to – reptilicus