Có lẽ đơn giản nhất trong tất cả các ô là hình dung của một hàm $ y = f [x] $. Ở đây chúng tôi sẽ xem xét đầu tiên về việc tạo ra một cốt truyện đơn giản thuộc loại này. Như với tất cả các phần sau, chúng tôi sẽ bắt đầu bằng cách thiết lập máy tính xách tay để vẽ và nhập các gói chúng tôi sẽ sử dụng: In [1]:%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use['seaborn-whitegrid']
import numpy as np
Đối với tất cả các sơ đồ matplotlib, chúng tôi bắt đầu bằng cách tạo một hình và một trục. Ở dạng đơn giản nhất, một hình và trục có thể được tạo như sau:
In [2]:
fig = plt.figure[] ax = plt.axes[]
Trong matplotlib, hình [một thể hiện của lớp
fig = plt.figure[] ax = plt.axes[]5] có thể được coi là một thùng chứa duy nhất chứa tất cả các đối tượng đại diện cho trục, đồ họa, văn bản và nhãn. Các trục [một thể hiện của lớp
fig = plt.figure[] ax = plt.axes[]6] là những gì chúng ta thấy ở trên: một hộp giới hạn với ve và nhãn, cuối cùng sẽ chứa các yếu tố cốt truyện tạo nên hình dung của chúng ta. Trong suốt cuốn sách này, chúng tôi thường sử dụng tên biến
fig = plt.figure[] ax = plt.axes[]7 để chỉ một thể hiện hình và
fig = plt.figure[] ax = plt.axes[]8 để chỉ một thể hiện trục hoặc nhóm các thể hiện trục.
Khi chúng tôi đã tạo một trục, chúng tôi có thể sử dụng hàm
fig = plt.figure[] ax = plt.axes[]9 để vẽ một số dữ liệu. Hãy bắt đầu với một xoang đơn giản:
In [3]:
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];
Ngoài ra, chúng ta có thể sử dụng giao diện pylab và để hình và trục được tạo cho chúng ta trong nền [xem hai giao diện cho giá của một cho một cuộc thảo luận về hai giao diện này]:
Nếu chúng ta muốn tạo một hình duy nhất với nhiều dòng, chúng ta chỉ có thể gọi hàm
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];0 nhiều lần:
In [5]:
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];
Đó là tất cả những gì có để vẽ các chức năng đơn giản trong matplotlib! Bây giờ chúng ta sẽ đi sâu vào một số chi tiết khác về cách kiểm soát sự xuất hiện của các trục và đường.
Điều chỉnh cốt truyện: Màu sắc dòng và Styles¶
Điều chỉnh đầu tiên bạn có thể muốn thực hiện cho một cốt truyện là kiểm soát màu sắc và kiểu dáng. Hàm
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];1 có các đối số bổ sung có thể được sử dụng để chỉ định các đối số này. Để điều chỉnh màu, bạn có thể sử dụng từ khóa
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];2, chấp nhận đối số chuỗi đại diện cho hầu như bất kỳ màu nào có thể tưởng tượng được. Màu sắc có thể được chỉ định theo nhiều cách khác nhau:
In [6]:
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported
Nếu không có màu nào được chỉ định, matplotlib sẽ tự động đạp xe qua một tập hợp các màu mặc định cho nhiều dòng.
Tương tự, kiểu dòng có thể được điều chỉnh bằng cách sử dụng từ khóa
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];3:
In [7]:
plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
Nếu bạn muốn cực kỳ terse, các mã
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];3 và
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];2 này có thể được kết hợp thành một đối số không phải là một từ ngữ cho chức năng
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];1:
In [8]:
plt.plot[x, x + 0, '-g'] # solid green plt.plot[x, x + 1, '--c'] # dashed cyan plt.plot[x, x + 2, '-.k'] # dashdot black plt.plot[x, x + 3, ':r']; # dotted red
Các mã màu đơn đặc biệt này phản ánh các chữ viết tắt tiêu chuẩn trong các hệ thống màu RGB [Đỏ/Xanh/Xanh lam] và CMYK [Cyan/Magenta/Yellow/Black], thường được sử dụng cho đồ họa màu kỹ thuật số.
Có nhiều đối số từ khóa khác có thể được sử dụng để tinh chỉnh sự xuất hiện của cốt truyện; Để biết thêm chi tiết, tôi khuyên bạn nên xem tài liệu của chức năng
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];1 bằng các công cụ trợ giúp của Ipython [xem trợ giúp và tài liệu trong Ipython].
Điều chỉnh lô: Giới hạn trục
Matplotlib thực hiện một công việc tốt là chọn giới hạn trục mặc định cho cốt truyện của bạn, nhưng đôi khi thật tuyệt khi có quyền kiểm soát tốt hơn. Cách cơ bản nhất để điều chỉnh giới hạn trục là sử dụng các phương thức
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];8 và
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];9:
In [9]:
plt.plot[x, np.sin[x]] plt.xlim[-1, 11] plt.ylim[-1.5, 1.5];
Nếu vì một lý do nào đó bạn muốn một trục được hiển thị ngược, bạn chỉ có thể đảo ngược thứ tự của các đối số:
In [10]:
plt.plot[x, np.sin[x]] plt.xlim[10, 0] plt.ylim[1.2, -1.2];
Một phương pháp liên quan hữu ích là
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];0 [lưu ý ở đây sự nhầm lẫn tiềm năng giữa các trục với E và trục với I]. Phương thức
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];0 cho phép bạn đặt giới hạn
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];2 và
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];3 chỉ bằng một cuộc gọi, bằng cách truyền một danh sách chỉ định
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];4:
In [11]:
plt.plot[x, np.sin[x]] plt.axis[[-1, 11, -1.5, 1.5]];
Phương pháp
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];0 thậm chí còn vượt ra ngoài điều này, cho phép bạn thực hiện những việc như tự động thắt chặt các giới hạn xung quanh cốt truyện hiện tại:
In [12]:
fig = plt.figure[] ax = plt.axes[]0
Nó cho phép các thông số kỹ thuật cấp cao hơn, chẳng hạn như đảm bảo tỷ lệ khung hình bằng nhau để trên màn hình của bạn, một đơn vị trong
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];2 bằng một đơn vị trong
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];3:
In [13]:
fig = plt.figure[] ax = plt.axes[]1
Để biết thêm thông tin về giới hạn trục và các khả năng khác của phương pháp
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];8, hãy tham khảo tài liệu
plt.plot[x, np.sin[x]] plt.plot[x, np.cos[x]];8.
Ghi nhãn lô
Là phần cuối cùng của phần này, chúng ta sẽ xem xét ngắn gọn việc ghi nhãn của các lô: tiêu đề, nhãn trục và truyền thuyết đơn giản.
Các tiêu đề và nhãn trục là các nhãn đơn giản nhất như vậy, có các phương thức có thể được sử dụng để nhanh chóng đặt chúng:
In [14]:
fig = plt.figure[] ax = plt.axes[]2
Vị trí, kích thước và kiểu dáng của các nhãn này có thể được điều chỉnh bằng cách sử dụng các đối số tùy chọn cho hàm. Để biết thêm thông tin, hãy xem tài liệu Matplotlib và tài liệu của từng chức năng này.
Khi nhiều dòng đang được hiển thị trong một trục duy nhất, có thể hữu ích để tạo ra một huyền thoại cốt truyện dán nhãn cho mỗi loại dòng. Một lần nữa, Matplotlib có một cách tích hợp để nhanh chóng tạo ra một huyền thoại như vậy. Nó được thực hiện thông qua phương pháp [bạn đoán nó]
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported0. Mặc dù có một số cách hợp lệ để sử dụng điều này, tôi thấy dễ dàng nhất để chỉ định nhãn của mỗi dòng bằng cách sử dụng từ khóa
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported1 của chức năng cốt truyện:
In [15]:
fig = plt.figure[] ax = plt.axes[]3
Như bạn có thể thấy, chức năng
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported0 theo dõi kiểu và màu sắc dòng, và phù hợp với chúng với nhãn chính xác. Thông tin thêm về chỉ định và định dạng các truyền thuyết cốt truyện có thể được tìm thấy trong tài liệu
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported3; Ngoài ra, chúng tôi sẽ đề cập đến một số tùy chọn huyền thoại tiên tiến hơn trong việc tùy chỉnh các huyền thoại cốt truyện.
Bên cạnh: matplotlib gotchas¶
Trong khi hầu hết các hàm
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported4 dịch trực tiếp sang các phương thức
fig = plt.figure[] ax = plt.axes[]8 [chẳng hạn như
fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];1 →
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported7,
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported0 →
plt.plot[x, np.sin[x - 0], color='blue'] # specify color by name plt.plot[x, np.sin[x - 1], color='g'] # short color code [rgbcmyk] plt.plot[x, np.sin[x - 2], color='0.75'] # Grayscale between 0 and 1 plt.plot[x, np.sin[x - 3], color='#FFDD44'] # Hex code [RRGGBB from 00 to FF] plt.plot[x, np.sin[x - 4], color=[1.0,0.2,0.3]] # RGB tuple, values 0 to 1 plt.plot[x, np.sin[x - 5], color='chartreuse']; # all HTML color names supported9, v.v.], đây không phải là trường hợp cho tất cả các lệnh. Cụ thể, các chức năng để đặt giới hạn, nhãn và tiêu đề được sửa đổi một chút. Để chuyển đổi giữa các hàm kiểu MATLAB và các phương thức hướng đối tượng, hãy thực hiện các thay đổi sau:
plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
0 →plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
1plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
2 →plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
3fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];
8 →plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
5fig = plt.figure[] ax = plt.axes[] x = np.linspace[0, 10, 1000] ax.plot[x, np.sin[x]];
9 →plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
7plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
8 →plt.plot[x, x + 0, linestyle='solid'] plt.plot[x, x + 1, linestyle='dashed'] plt.plot[x, x + 2, linestyle='dashdot'] plt.plot[x, x + 3, linestyle='dotted']; # For short, you can use the following codes: plt.plot[x, x + 4, linestyle='-'] # solid plt.plot[x, x + 5, linestyle='--'] # dashed plt.plot[x, x + 6, linestyle='-.'] # dashdot plt.plot[x, x + 7, linestyle=':']; # dotted
9
Trong giao diện hướng đối tượng để vẽ đồ thị, thay vì gọi các hàm này một cách riêng lẻ, thường thuận tiện hơn khi sử dụng phương thức
plt.plot[x, x + 0, '-g'] # solid green plt.plot[x, x + 1, '--c'] # dashed cyan plt.plot[x, x + 2, '-.k'] # dashdot black plt.plot[x, x + 3, ':r']; # dotted red0 để đặt tất cả các thuộc tính này cùng một lúc:
In [16]:
fig = plt.figure[] ax = plt.axes[]4