2012-03-16 3 views
6

한 가지 단서 : 내 질문의 중심에있는 구문 요소는 파이썬 언어입니다. 그러나이 요소는 Matplotlib 라이브러리에 자주 나타납니다.이 라이브러리는 내가 본 유일한 컨텍스트입니다. 일반적인 Python 문법 질문이든 라이브러리 특정 질문이든, 확실하지 않습니다. 내가 아는 건 내가 파이썬 언어 참조 또는 Matplotlib 워드 프로세서에서 아무 것도 찾을 수 없다는 것이다.Matplotlib에서 자주 사용되는 비정상적인 파이썬 구문 요소

뛰어난 Python 플로팅 라이브러리를 사용하거나 개발하는 사람들은 Matplotlib에서 아래 구문 패턴을 인식합니다. (

from matplotlib import pyplot as MPL 

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

는이 식의 왼쪽에있는 구조는 무엇입니까? 그리고,

이 그것을 사용하는 목적은 무엇인가? 내가

익히기 파이썬의 할당 풀기 예 :

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

나는 또한

파이썬 한 항목에 튜플 때때로 t로 표현되는 것을 알고 있어요 그리고 하나는 위의 첫 번째 질문에 대한 해답이 될 수있다; 그렇다면 나는 아직 플롯에 대한 호출에서 반환 된 값의 첫 번째 요소 만이 필요한 이유를 아직 이해하지 못하고 있습니다.

참고 : "l"은 소문자 "ell"이며,이 문자는 같은 문자로 시작하는 개체에 바인딩되어 있기 때문에 여기에서 가장 자주 사용되는 문자이기 때문에이 문자를 사용하고 있습니다 (아래 참조).).


일부 추가 컨텍스트 :

호출 된 Line2D 인스턴스의 목록 반환 플롯 에 :

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

것은 그래서 난 형 Line2D의 양쪽 모두의 객체입니다. 일단 lines2D 객체에 바인딩

이 "변수는"보통과 같이하기 matplotlib 코드에서 볼 :

>>> l.set_color("orange") 

이 식은 플롯 창 내부 데이터 값을 나타내는 라인의 색상 (변경 "플롯 라인")

다음은 또 하나의 예입니다. 이 "가변 쉼표"구조에 대한 일반적인 시나리오는 작은 툴킷/그래픽 백엔드와 독립적 인 위젯을 Matplotlib 플롯 창에 임베드하는 것입니다 (예 : 체크 박스로 켜기/끄기, 플롯 창에 나타나는 여러 데이터 시리즈). .

아래 코드에서 간단한 Matplotlib 플롯과 각 데이터 시리즈에 대해 하나씩 두 개의 체크 박스로 구성된 간단한 위젯이 만들어집니다.

L0 다시 플롯에 호출에 바인딩 (L1); * on_click *이 호출 될 때 전달 된 사용자 정의 함수 내에서 get_visible 및 set_visible 메소드가 호출 될 때 나중에 두 가지 장점이 나타납니다.

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

[l] = v 

같이 거의] 같은가요 '는 matlab의 플롯에서 모델링되었으므로 단일 함수 호출로 플롯하기 위해 임의의 수의 라인을 허용합니다. (예를 들어'plt.plot (x, 1 * x, x, 2 * x, x, 3 * x, x, 4 * x)와 같은 일을 할 수 있고 4 줄을 그리거나 2 차원 배열을 전달하여 각 행에 대한 행)이 때문에, 'plot'은 단 하나의 행이 있더라도 항상 시퀀스를 반환합니다. 사실'plot'을 사용하여 한 번에 두 줄 이상을 그릴 수있는 것은 매우 드뭅니다. 그래서 종종'l, = plt.plot (x, y)'를 보게됩니다. –

+0

'자주 Matplotlib에 사용되었습니다 .' 문서의 예제에 연결할 수 있습니까? – n611x007

+0

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

답변

2
l, = v 

이유 '시퀀스를 반환 plot`'플롯 같은 이유의 비트를 제공하기 위해 실시 예

>>> l=[3] 
>>> [v] = l 
>>> v 
3 
>>> 
관련 문제