2011-12-09 16 views
7

Ho un sacco di punti che sto cercando di tracciare usando matplotlib. Per ogni punto (a, b) voglio disegnare la linea X = a per Y in [0, b]. Qualche idea su come fare questo?Disegna linee dall'asse x ai punti

risposta

9

È sufficiente disegnare ciascuna linea utilizzando i due punti finali. Una linea verticale X = a per Y in [0, b] ha ​​endpoint (x, y) = (a, 0) e (a, b). Quindi:

# make up some sample (a,b): format might be different to yours but you get the point. 
import matplotlib.pyplot as plt 
points = [ (1.,2.3), (2.,4.), (3.5,6.) ] # (a1,b1), (a2,b2), ... 

plt.hold(True) 
plt.xlim(0,4) # set up the plot limits 

for pt in points: 
    # plot (x,y) pairs. 
    # vertical line: 2 x,y pairs: (a,0) and (a,b) 
    plt.plot([pt[0],pt[0]], [0,pt[1]]) 

plt.show() 

dà qualcosa come il seguente: drawing vertical lines

1

Utilizzare una trama stem

La soluzione meno ingombrante impiega matplotlib.pyplot.stem

import matplotlib.pyplot as plt 
x = [1. , 2., 3.5] 
y = [2.3, 4., 6.] 
plt.xlim(0,4) 
plt.stem(x,y) 
plt.show() 

enter image description here

Problemi correlati