2012-03-16 20 views
6

Một điều kiện: Phần tử cú pháp ở trung tâm của Câu hỏi của tôi là bằng ngôn ngữ Python; tuy nhiên, yếu tố này xuất hiện thường xuyên trong thư viện Matplotlib, đó là bối cảnh duy nhất tôi đã thấy nó. Vì vậy, cho dù đó là một câu hỏi cú pháp Python chung hoặc một thư viện cụ thể một, tôi không chắc chắn. Những gì tôi biết là tôi không thể tìm thấy bất cứ điều gì về điểm - hoặc trong Tài liệu tham khảo Ngôn ngữ Python hoặc trong tài liệu Matplotlib.Một phần tử cú pháp Python bất thường thường được sử dụng trong Matplotlib

Những người sử dụng và/hoặc phát triển với thư viện vẽ biểu đồ Python tuyệt vời, Matplotlib sẽ nhận dạng mẫu cú pháp bên dưới. (

from matplotlib import pyplot as MPL 

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

xây dựng ở phía bên trái của biểu thức này là gì? Và,

mục đích để sử dụng nó là gì?

Tôi quen thuộc với việc phân bổ của Python, ví dụ:

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

Tôi cũng nhận thức được rằng trong Python một mục tuples đôi khi được biểu diễn dưới dạng t,

Và một trong hai có thể là câu trả lời cho câu hỏi đầu tiên trên; nếu vậy thì tôi chưa hiểu lý do tại sao chỉ phần tử đầu tiên của giá trị được trả lại từ cuộc gọi đến số là cần thiết tại đây.

(lưu ý: "l" là chữ thường "ell"; tôi đang sử dụng chữ cái này vì ls là chữ thường được sử dụng ở đây, có thể vì nó được gắn với đối tượng bắt đầu bằng cùng chữ cái xem bên dưới).


Một số bối cảnh bổ sung:

Các cuộc gọi đến cốt truyện lợi nhuận một danh sách các line2D trường:

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

Vì vậy, l là một đối tượng kiểu line2D.

Khi ràng buộc với đối tượng lines2D, điều này "biến" thường thấy trong mã Matplotlib như vậy:

>>> l.set_color("orange") 

biểu hiện này sẽ thay đổi màu sắc của dòng trình bày các giá trị dữ liệu bên trong cửa sổ cốt truyện ("dòng âm mưu")

Dưới đây là một ví dụ khác; nó cho thấy một kịch bản chung cho việc xây dựng "biến-dấu phẩy" này, nhúng các widget nhỏ/đồ họa phụ trợ độc lập vào cửa sổ âm mưu Matplotlib, ví dụ, để bật/tắt bằng hộp kiểm, nhiều chuỗi dữ liệu xuất hiện trong cửa sổ lô .

Trong mã bên dưới, một âm mưu Matplotlib đơn giản và một tiện ích đơn giản bao gồm hai hộp kiểm một cho mỗi chuỗi dữ liệu được tạo.

l0l1 đang một lần nữa bị ràng buộc vào các cuộc gọi đến cốt truyện; cả hai xuất hiện một vài liens sau khi các phương thức get_visible và set_visible của chúng được gọi trong một hàm tùy chỉnh được truyền vào khi * on_click * được gọi.

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

Để cung cấp cho một chút của một lý do là tại sao 'plot' trả về một chuỗi, 'cốt truyện 'được mô hình hóa khỏi âm mưu của MATLAB, vì vậy nó chấp nhận một số dòng tùy ý để vẽ với một cuộc gọi hàm duy nhất. (ví dụ: bạn có thể làm những việc như 'plt.plot (x, 1 * x, x, 2 * x, x, 3 * x, x, 4 * x)' và âm mưu 4 dòng, hoặc vượt qua trong mảng 2d và nhận được một cho mỗi hàng) Bởi vì điều này, 'cốt truyện' luôn trả về một chuỗi, ngay cả khi chỉ có một dòng. Nó thực sự khá hiếm khi vẽ nhiều hơn một dòng tại một thời điểm với 'cốt truyện', vì vậy bạn thường thấy' l, = plt.plot (x, y) '. –

+0

'thường được sử dụng trong Matplotlib' bạn có thể liên kết với một ví dụ trong tài liệu không? – n611x007

+0

chẳng hạn như http://matplotlib.org/users/legend_guide.html#controlling-the-legend-entries – n611x007

Trả lời

2
l, = v 

là [gần] giống như

[l] = v 

Ví dụ

>>> l=[3] 
>>> [v] = l 
>>> v 
3 
>>> 
17

Đó là sequence unpacking cho một phần tử duy nhất.

>>> l = [3] 
>>> v, = l 
>>> v 
3 
Các vấn đề liên quan