Необычный элемент синтаксиса Python, часто используемый в Matplotlib

Одна оговорка: элемент синтаксиса, лежащий в основе моего Вопроса, находится на языке Python; однако этот элемент часто появляется в библиотеке Matplotlib, и это единственный контекст, в котором я его видел. Так что я не уверен, является ли это общим вопросом синтаксиса Python или вопросом конкретной библиотеки. Что я знаю точно, так это то, что я не смог найти ничего по существу — ни в Справочнике по языку Python, ни в документах Matplotlib.

Те, кто использует и/или разрабатывает с помощью превосходной библиотеки построения графиков Python, Matplotlib распознают приведенный ниже синтаксический шаблон. (

from matplotlib import pyplot as MPL

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

Какова конструкция в левой части этого выражения?И,

какова цель его использования?

Я знаком с распаковкой присваивания в Python, например,

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

Я также знаю, что в Python одноэлементные кортежииногда представляются как t,

И любой из них может быть ответом на первый вопрос выше; если это так, то я не пока не понимаю, почему здесь нужен только первый элемент значения, возвращаемого вызовом plot.

(примечание: «l» — это строчная буква «ell»; я использую эту букву, потому что здесь чаще всего используется буква ls, вероятно, потому, что она привязана к объекту, который начинается с той же буквы — см. ниже).


Дополнительный контекст:

Вызов plotвозвращает список экземпляров line2D:

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

So l является объектом типа line2D .

После привязки к объекту lines2D эта «переменная» обычно отображается в коде Matplotlib следующим образом:

>>> l.set_color("orange")

Это выражение изменяет цвет линии, которая представляет значения данных внутри окна графика («линия графика»)

Ниже приведен еще один пример; он показывает общий сценарий для этой конструкции «переменная запятая», которая представляет собой встраивание небольших виджетов, независимых от инструментария / графического бэкэнда, в окно графика Matplotlib, например, для включения / выключения с помощью флажка, несколько рядов данных, появляющихся в окне графика .

В приведенном ниже коде создается простой график Matplotlib и простой виджет, состоящий из двух флажков, по одному для каждой серии данных.

l0иl1снова привязаны к вызовам plot; оба появляются несколькими залогами позже, когда их методы get_visible и set_visible вызываются в пользовательской функции, передаваемой при вызове *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()
6
задан doug 16 March 2012 в 04:22
поделиться