2013-05-24 18 views
8

Idę przez podstawowe tutoriale dla matplotlib, i przykładowy kod, który pracuję na to:matplotlib linia 2d linia, działka = przecinek oznaczający

import numpy as np 

import matplotlib.pylab as plt 

x=[1,2,3,4] 
y=[5,6,7,8] 

line, = plt.plot(x,y,'-') 

plt.show() 

Czy ktoś wie co przecinek po linii (line,=plt.plot(x,y,'-')) oznacza? Myślałem, że to literówka, ale oczywiście cały kod nie działa, jeśli pominę przecinek.

+0

Czy możesz zaakceptować odpowiedź? (duże szare pole wyboru po lewej) – tacaswell

Odpowiedz

9

plt.plot powoduje wyświetlenie listy obiektów o numerach Line2D, nawet jeśli wykreślono tylko jedną linię.

Ten przecinek rozpakowuje pojedynczą wartość do line.

ex

a, b = [1, 2] 
a, = [1, ] 
4

Sposób plot zwraca obiekty, które zawierają informacje o każdej linii na wykresie w postaci listy. W pythonie możesz rozwinąć elementy listy za pomocą przecinka. Na przykład, jeśli wykreślono dwie linie, zrobiłbyś:

line1, line2 = plt.plot(x,y,'-',x,z,':') 

Gdzie line1 odpowiadałaby x,y i line2 odpowiada x,z. W twoim przykładzie jest tylko jedna linia, więc potrzebujesz przecinka, by powiedzieć, żeby rozwinąć listę 1-elementową. Co masz jest równoważna

line = plt.plot(x,y,'-')[0] 

lub

line = ply.plot(x,y,'-') 
line = line[0] 

Twój kod powinien działać, jeśli pominąć przecinek, tylko dlatego, że nie używasz line. W twoim prostym przykładzie wystarczy plt.plot(x,y,'-').

+0

Zwraca 'list', a nie' krotkę' – tacaswell

+0

@ tcaswell OK, ale nie zmienia to odpowiedzi – SethMMorton

+0

nie, ale nie ma powodu, aby napisać coś niepoprawnego. W innych przypadkach może mieć znaczenie, jeśli chcesz zrobić coś ciekawszego z listą zwróconych obiektów 'Line2D'. – tacaswell

2

Wartość zwracana przez funkcję jest krotką lub listą zawierającą jeden element, a ta składnia "rozpakowuje" wartość z krotki/listy do prostej zmiennej.