2012-03-16 12 views
6

Una condizione: l'elemento di sintassi al centro della mia domanda è in linguaggio Python; tuttavia, questo elemento appare frequentemente nella libreria Matplotlib, che è l'unico contesto in cui l'ho visto. Quindi, sia che si tratti di una domanda generale sulla sintassi di Python o di una libreria specifica, non sono sicuro. Quello che so è che non sono riuscito a trovare nulla sul punto - sia nel documento Language Reference Python o nei documenti Matplotlib.Un elemento di sintassi Python insolito usato frequentemente in Matplotlib

Coloro che utilizzano e/o sviluppano con l'eccellente libreria di plottaggio Python, Matplotlib riconoscerà il seguente schema di sintassi. (

from matplotlib import pyplot as MPL 

>>> l, = MPL.plot(s, t)  # s & t are ordinary NumPy 1D arrays 

Qual è la costruzione sul lato sinistro di questa espressione? E,

qual è lo scopo per il suo utilizzo?

Sono familiarità con il compito di Python disimballaggio, ad es.

>>> a, b = [100, 200] 

Sono anche consapevole del fatto che in Python un elemento tuple sono a volte rappresentati come t,

E né potrebbe essere la risposta alla prima domanda di cui sopra; se è così allora non capisco ancora il motivo per cui qui è necessario solo il primo elemento del valore restituito dalla chiamata alla trama .

(nota: "l" è una lettera minuscola "ell"; sto usando questa lettera perché ls è la lettera usata più spesso qui, probabilmente perché è legata a un oggetto che inizia con la stessa lettera-vedi sotto).


Alcuni contesto aggiuntivo:

La chiamata a trama rendimenti un elenco di line2D casi:

>>> type(l) 
    <class 'matplotlib.lines.Line2D'> 

Così l è un oggetto di tipo line2D.

volta vincolato all'oggetto lines2D, questa "variabile" solito è in codice Matplotlib modo:

>>> l.set_color("orange") 

Questa espressione cambia il colore della linea che rappresenta i valori di dati all'interno della finestra grafica (la "trama")

Di seguito è riportato un altro esempio; mostra uno scenario comune per questa costruzione "variable-comma", che include piccoli widget toolkit/graphics-backend-indipendenti in una finestra di trama Matplotlib, ad esempio, per attivare/disattivare la casella di controllo, più serie di dati che appaiono nella finestra trama .

Nel seguente codice, un semplice grafico Matplotlib e un semplice widget composto da due caselle di controllo una per ogni serie di dati vengono create.

l0 e l1 sono ancora legati alle chiamate al trama; entrambi appaiono un paio di privilegi più tardi quando i loro metodi get_visible e set_visible vengono chiamati all'interno di una funzione personalizzata inoltrata quando viene chiamato * on_click *.

from matplotlib.widgets import CheckButtons 

ax = plt.subplot(111) 
l0, = ax.plot(s, t, visible=False, lw=2) 
l1, = ax.plot(t, s1, lw=2) 

rax = plt.axes([.05, .4, .1, .15]) 
check = CheckButtons(rax, ('raw', 'transformed'), (False, True)) 

def fnx(checkbox_label): 
    if checkbox_label == 'raw': 
     l0.set_visible(not l0.get_visible()) 
    elif checkbox_label == 'transformed': 
     l1.set_visible(not l1.get_visible()) 

check.on_clicked(fnx) 

plt.show() 
+2

Per dare un po 'di una ragione per cui plot' restituisce una sequenza, '' trama 'è modellato sulla trama di matlab, quindi accetta un numero arbitrario di righe da tracciare con una singola chiamata di funzione. (ad esempio puoi fare cose come 'plt.plot (x, 1 * x, x, 2 * x, x, 3 * x, x, 4 * x)' e tracciare 4 linee, o passare in array 2d e ottenere un linea per ogni riga) Per questo motivo, 'plot' restituisce sempre una sequenza, anche se c'è una sola riga. In realtà è abbastanza raro tracciare più di una riga alla volta con 'trama', quindi molto spesso vedi' l, = plt.plot (x, y) '. –

+0

'usato frequentemente in Matplotlib' potresti collegare ad un esempio nei documenti? – n611x007

+0

come http://matplotlib.org/users/legend_guide.html#controlling-the-legend-entries – n611x007

risposta

2
l, = v 

Is [quasi] la stessa

[l] = v 

Esempio

>>> l=[3] 
>>> [v] = l 
>>> v 
3 
>>> 
Problemi correlati