2013-05-24 4 views
8

Я ходить через основные учебники для Matplotlib, и пример кода, который я работаю на это:Matplotlib 2d линия линия = участок запятая означает

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() 

Кто-нибудь знает, что запятая после строки (line,=plt.plot(x,y,'-')) означает? Я думал, что это опечатка, но, очевидно, весь код не работает, если я пропущу запятую.

+0

Можете ли вы принять ответ, пожалуйста? (большой серый флажок слева) – tacaswell

ответ

9

plt.plot возвращает список объектов Line2D, нанесенных на график, даже если вы построили только одну строку.

Эта запятая распаковывает одно значение в line.

экс

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

plot метод возвращает объекты, которые содержат информацию о каждой линии на графике в виде списка. В python вы можете развернуть элементы списка с запятой. Например, если вы нанесены две линии, вы могли бы сделать:

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

Где line1 будет соответствовать x,y и line2 соответствует x,z. В вашем примере есть только одна строка, поэтому вам нужна запятая, чтобы сообщить ей о расширении списка из 1 элемента. Что у вас есть эквивалентно

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

или

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

Ваш код должен работать, если опустить запятую, только потому, что вы не используете line. В вашем простом примере plt.plot(x,y,'-') будет достаточно.

+0

Он возвращает 'list', а не' tuple' – tacaswell

+0

@tcaswell OK, но он не меняет ответа – SethMMorton

+0

нет, но нет причин писать что-то фактически неверно. В других случаях это может иметь значение, если вы хотите сделать что-то более привлекательное со списком возвращаемых объектов Line2D. – tacaswell

2

Возвращаемое значение функции является кортежем или списком, содержащим один элемент, и этот синтаксис «распаковывает» значение из кортежа/списка в простую переменную.