2013-05-24 67 views
8

Tôi đang đi bộ qua các hướng dẫn cơ bản cho matplotlib, và mã ví dụ mà tôi đang làm việc trên là:matplotlib dòng dòng 2d, = cốt truyện dấu phẩy nghĩa

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

Có ai biết những gì các dấu phẩy sau dòng (line,=plt.plot(x,y,'-')) có nghĩa là gì? Tôi nghĩ đó là lỗi chính tả nhưng rõ ràng toàn bộ mã không hoạt động nếu tôi bỏ qua dấu phẩy.

+0

Bạn có thể chấp nhận câu trả lời không? (hộp kiểm lớn màu xám ở bên trái) – tacaswell

Trả lời

9

plt.plot trả về danh sách các đối tượng Line2D được vẽ đồ thị, ngay cả khi bạn chỉ vẽ một dòng.

Dấu phẩy đó đang giải nén một giá trị duy nhất thành line.

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

Phương pháp plot trả về đối tượng chứa thông tin về mỗi dòng trong cốt truyện như một danh sách. Trong python, bạn có thể mở rộng các phần tử của danh sách bằng dấu phẩy. Ví dụ, nếu bạn vẽ hai dòng, bạn sẽ làm gì:

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

đâu line1 sẽ tương ứng với x,y, và dòng2 tương ứng với x,z. Trong ví dụ của bạn, chỉ có một dòng, vì vậy bạn cần dấu phẩy để cho nó mở rộng danh sách 1 phần tử. Những gì bạn có là tương đương với

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

hoặc

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

Mã của bạn nên làm việc nếu bạn bỏ qua các dấu phẩy, chỉ vì bạn không sử dụng line. Trong ví dụ đơn giản của bạn plt.plot(x,y,'-') là đủ.

+0

Nó trả về một 'danh sách', không phải là' tuple' – tacaswell

+0

@tcaswell OK, nhưng nó không thay đổi câu trả lời – SethMMorton

+0

không, nhưng không có lý do gì để viết một cái gì đó không chính xác. Nó có thể quan trọng trong các trường hợp khác nếu bạn muốn làm một cái gì đó fancier với danh sách các đối tượng 'Line2D' trả về. – tacaswell

2

Giá trị trả về của hàm là một bộ hoặc danh sách chứa một mục và cú pháp này "bỏ gói" giá trị ra khỏi tuple/list thành một biến đơn giản.