Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Giới thiệu¶

Có nhiều gói âm mưu khoa học. Trong chương này, chúng tôi tập trung vào matplotlib, được chọn bởi vì đây là thư viện âm mưu thực tế và tích hợp rất tốt với Python.matplotlib, chosen because it is the de facto plotting library and integrates very well with Python.

Đây chỉ là một giới thiệu ngắn về gói âm mưu

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
9. Khả năng và tùy chỉnh của nó được mô tả ở độ dài trong trang web của dự án, hướng dẫn của người mới bắt đầu, hướng dẫn
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
ValueError: x and y must have same first dimension
0 và tài liệu
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
ValueError: x and y must have same first dimension
0. (Kiểm tra cụ thể các tài liệu cụ thể của
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
ValueError: x and y must have same first dimension
2).

Cách sử dụng cơ bản - ________ 22¶

Việc sử dụng đơn giản

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
9 rất đơn giản:

>>> from matplotlib import pyplot as plt
>>> plt.plot([1,2,3,4])
[<matplotlib.lines.Line2D at 0x7faa8d9ba400>]
>>> plt.show()

Nếu bạn chạy mã này trong trình thông dịch Python tương tác, bạn sẽ nhận được một âm mưu như sau:

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Hai điều cần lưu ý từ cốt truyện này:

  • >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    2 giả định danh sách dữ liệu duy nhất của chúng tôi là giá trị y;

  • Trong trường hợp không có danh sách giá trị X, [0, 1, 2, 3] đã được sử dụng thay thế.

    Ghi chú

    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    6 thường được sử dụng viết tắt là
    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    7, giống như
    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    8 thường được viết tắt là
    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    9. Phần còn lại của chương này sử dụng hình thức viết tắt.

    Ghi chú

    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    6 thường được sử dụng viết tắt là
    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    7, giống như
    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    8 thường được viết tắt là
    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
    ValueError: x and y must have same first dimension
    
    9. Phần còn lại của chương này sử dụng hình thức viết tắt.

Các phiên dịch viên Python tương tác nâng cao như Ipython có thể tự động hóa một số cuộc gọi âm mưu cho bạn. Chẳng hạn, bạn có thể chạy

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
0 trong ipython, sau đó bạn không còn cần phải chạy
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
1 mỗi khi gọi
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2. Để đơn giản,
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
1 cũng sẽ bị loại khỏi phần còn lại của các ví dụ này.

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Nếu bạn chuyển hai danh sách cho

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2, bạn sẽ đặt rõ ràng các giá trị x:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
ValueError: x and y must have same first dimension

Có thể hiểu được, nếu bạn cung cấp hai danh sách độ dài của chúng phải khớp:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Để vẽ nhiều đường cong, chỉ cần gọi

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2 với nhiều cặp danh sách X X khi cần thiết:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])

Thay vào đó, nhiều lô có thể được thêm vào bằng cách nhiều lần gọi

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2. Đoạn mã sau đây tạo ra âm mưu tương tự như ví dụ mã trước:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Việc thêm thông tin vào các trục lô rất đơn giản để làm:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], label='first plot')
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16], label='second plot')
>>> plt.legend()

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Ngoài ra, việc thêm một huyền thoại khá đơn giản:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")
>>> plt.xlim(0, 1)
>>> plt.ylim(-5, 20)

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Và các phạm vi trục điều chỉnh có thể được thực hiện bằng cách gọi

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
7 và
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
8 với giới hạn thấp hơn và cao hơn cho các trục tương ứng.

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], 'rx')
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16], 'b-.')
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Ngoài danh sách dữ liệu X và Y,

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2 cũng có thể lấy các chuỗi xác định kiểu vẽ âm mưu:

Các chuỗi kiểu, một cặp mỗi X, Y, chỉ định màu sắc và hình dạng: ‘RX, viết tắt của Hội Chữ thập đỏ và‘ B-. Kiểm tra tài liệu của

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
ValueError: x and y must have same first dimension
2 để biết danh sách các màu sắc và hình dạng.

Cuối cùng, >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16]) 2 cũng có thể, thuận tiện, lấy các mảng numpy làm đối số của nó.

Nhiều lô khác

Trong khi

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2 có thể đáp ứng các nhu cầu âm mưu cơ bản,
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
9 cung cấp nhiều chức năng âm mưu hơn. Dưới đây chúng tôi thử chức năng
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
4, để vẽ biểu đồ thanh. Danh sách đầy đủ các chức năng âm mưu có thể được tìm thấy trong tài liệu
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4, 5])
ValueError: x and y must have same first dimension
0.

>>> plt.bar(range(7), [1, 2, 3, 4, 3, 2, 1])

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Biểu đồ thanh có thể được vẽ bằng cách sử dụng

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
4, theo cách tương tự như
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2:

Tuy nhiên, lưu ý rằng trái với

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
             [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
2 bạn phải luôn chỉ định x và y (tương ứng, trong các thuật ngữ biểu đồ thanh với các cạnh thùng bên trái và độ cao thanh). Cũng lưu ý rằng bạn chỉ có thể vẽ một biểu đồ cho mỗi cuộc gọi. Đối với nhiều biểu đồ chồng chéo, bạn sẽ cần phải gọi
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
4 nhiều lần.

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
0

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Một trong những đối số tùy chọn cho

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
4 là
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")
1, cho phép bạn chỉ định chiều rộng của các thanh. Mặc định của nó là 0,8 có thể không phù hợp nhất cho tất cả các trường hợp, đặc biệt là khi các giá trị X nhỏ:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
1

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Chỉ định các thanh hẹp hơn cho chúng ta một kết quả tốt hơn nhiều:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
2

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
3

Đôi khi bạn sẽ muốn so sánh một hàm với dữ liệu đo được của bạn; ví dụ khi bạn vừa trang bị một chức năng. Tất nhiên điều này là có thể với matplotlib. Hãy nói rằng chúng tôi đã trang bị một hàm bậc hai cho 10 số nguyên tố đầu tiên và muốn kiểm tra mức độ phù hợp của chúng tôi phù hợp với dữ liệu của chúng tôi.

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Chúng tôi đã tạo ra biểu đồ phân tán màu đỏ bằng cách truyền cho nó đối số từ khóa >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4]) >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16]) >>> plt.xlabel("Time (s)") >>> plt.ylabel("Scale (Bananas)") 2; >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4]) >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16]) >>> plt.xlabel("Time (s)") >>> plt.ylabel("Scale (Bananas)") 3 là viết tắt của màu sắc, >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4]) >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16]) >>> plt.xlabel("Time (s)") >>> plt.ylabel("Scale (Bananas)") 4 cho màu đỏ. Ngoài ra, nhãn mà chúng tôi đã đưa ra cho tuyên bố >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4]) >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16]) >>> plt.xlabel("Time (s)") >>> plt.ylabel("Scale (Bananas)") 5 ở định dạng latex, làm cho nó thực sự rất đẹp. Nó không phải là một sự phù hợp tuyệt vời, nhưng đó là bên cạnh điểm ở đây.

Tương tác và lưu vào File¶

  • Nếu bạn đã thử các ví dụ trước bằng cách sử dụng bảng điều khiển Python/Ipython, bạn có thể có cho mỗi lô một cửa sổ tương tác. Thông qua bốn nút ngoài cùng bên phải trong cửa sổ này, bạn có thể thực hiện một số hành động:
  • Chảo xung quanh khu vực cốt truyện;
  • Phóng to và phóng to;
  • Truy cập kiểm soát kích thước lô tương tác;

Lưu vào Tệp.

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Ba nút ngoài cùng bên trái sẽ cho phép bạn điều hướng giữa các chế độ xem lô khác nhau, sau khi phóng to/đăng tải.

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
4

Ghi chú

Khi lưu một lô, bạn sẽ muốn chọn định dạng vector (PDF, PS, EPS hoặc SVG). Đây là các định dạng độc lập với độ phân giải và sẽ mang lại chất lượng tốt nhất, ngay cả khi được in ở kích thước rất lớn. Tiết kiệm như PNG nên tránh, và tiết kiệm khi JPG nên tránh nhiều hơn nữa.

Nhiều hình

Với nền tảng này, chúng ta có thể chuyển sang một số sử dụng matplotlib tiên tiến hơn. Cũng có thể sử dụng nó theo cách hướng đối tượng, cho phép tách biệt nhiều hơn giữa một số lô và hình. Hãy nói rằng chúng tôi có hai bộ dữ liệu mà chúng tôi muốn vẽ bên cạnh nhau, thay vì trong cùng một hình. Matplotlib có một số lớp tổ chức: Đầu tiên, có một đối tượng

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")
7, về cơ bản là cửa sổ cốt truyện của bạn được vẽ. Hoàn toàn có thể có nhiều trục (hoặc không) trong một hình. Chúng tôi sẽ giải thích phương pháp
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")
9 một chút sau đó. Hiện tại, nó chỉ tạo ra một thể hiện trục.

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
5

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
6

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Ví dụ này cũng nhấn mạnh một cách gọn gàng một trong những thiếu sót của Matplotlib: API rất không nhất quán. Nơi chúng tôi có thể làm

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], label='first plot')
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16], label='second plot')
>>> plt.legend()
0 trước đây, bây giờ chúng tôi cần phải làm
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], label='first plot')
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16], label='second plot')
>>> plt.legend()
1. Ngoài ra, chúng ta có thể hiển thị từng con số một (tức là
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], label='first plot')
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16], label='second plot')
>>> plt.legend()
2); Thay vào đó, chúng ta chỉ có thể cho tất cả họ thấy cùng một lúc với
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], label='first plot')
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16], label='second plot')
>>> plt.legend()
3.

Bây giờ, chúng tôi muốn thực hiện nhiều lô bên cạnh nhau. Chúng tôi làm điều đó bằng cách gọi

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")
5 trên hai trục khác nhau:

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
2

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
8

Hướng dẫn how do you plot a line in a list in python? - làm thế nào để bạn vẽ một dòng trong danh sách trong python?

Phương thức

>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")
9 trả về một thể hiện
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4], label='first plot')
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16], label='second plot')
>>> plt.legend()
6 và lấy ba đối số: đầu tiên là số lượng hàng để tạo; Thứ hai là số lượng cột; Và cuối cùng là số lô chúng tôi thêm ngay bây giờ. Vì vậy, trong việc sử dụng thông thường, bạn sẽ cần gọi
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4])
>>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
>>> plt.xlabel("Time (s)")
>>> plt.ylabel("Scale (Bananas)")
9 một lần cho mỗi trục bạn muốn thực hiện với cùng một đối số đầu tiên. Điều gì sẽ xảy ra nếu lần đầu tiên bạn yêu cầu một hàng và hai cột, và cho hai hàng và một cột trong cuộc gọi tiếp theo?

Bài tập

  1. Vẽ một đường nét đứt.
  2. Tìm kiếm tài liệu Matplotlib và vẽ một dòng với các trình vẽ âm mưu trên tất cả các dữ liệu của nó. Bạn có thể làm điều này chỉ với một cuộc gọi đến
    >>> plt.plot([0.1, 0.2, 0.3, 0.4], [1, 2, 3, 4],
                 [0.1, 0.2, 0.3, 0.4], [1, 4, 9, 16])
    
    2.