Điều chỉnh Plot: Màu và Styles dòng¶
Điều chỉnh đầu tiên bạn có thể muốn thực hiện với một biểu đồ là điều khiển màu và kiểu đường.Hàm plt.plot()
nhận thêm các tham số có thể được sử dụng để xác định chúng.Để điều chỉnh màu, bạn có thể sử dụng từ khóa color
, nó chấp nhận một đối số chuỗi thể hiện hầu hết bất kỳ màu sắc 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:
plt.plot(x, np.sin(x - 0), color='blue') # specify color by nameplt.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 1plt.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 1plt.plot(x, np.sin(x - 5), color='chartreuse'); # all HTML color names supported
Nếu không có màu được chỉ định, Matplotlib sẽ tự động lặp lại một tập hợp màu mặc định cho nhiều đường.
Tương tự, kiểu dòng cũng có thể được điều chỉnh bằng cách sử dụng từ khoá linestyle
:
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='-') # solidplt.plot(x, x + 5, linestyle='--') # dashedplt.plot(x, x + 6, linestyle='-.') # dashdotplt.plot(x, x + 7, linestyle=':'); # dotted
Nếu bạn muốn rất ngắn gọn, các mã linestyle
và color
này có thể được kết hợp thành một đối số không từ khóa duy nhất cho hàm plt.plot()
:
plt.plot(x, x + 0, '-g') # solid greenplt.plot(x, x + 1, '--c') # dashed cyanplt.plot(x, x + 2, '-.k') # dashdot blackplt.plot(x, x + 3, ':r'); # dotted red
Các mã màu 1 ký tự này phản ánh các từ viết tắt tiêu chuẩn trong hệ thống màu RGB (Đỏ/Xanh lá cây/Xanh biển) và CMYK (Xanh da trời/Hồng/Màu vàng/Đen), thường được sử dụng cho đồ hoạ màu số.
Có nhiều các tham số khác có thể được sử dụng để điều chỉnh một cách tinh vi hiển thị của biểu đồ; để biết thêm chi tiết, tôi đề nghị xem hướng dẫn của hàm plt.plot()
bằng cách sử dụng các công cụ giúp đỡ của IPython (Xem Trợ giúp và Tài liệu trong IPython).
Điều chỉnh Đồ thị: Giới hạn trục¶
Matplotlib làm một công việc tốt trong việc chọn giới hạn trục mặc định cho đồ thị của bạn, nhưng đôi khi việc có sự kiểm soát tinh vi là rất tốt.Cách đơn giản nhất để điều chỉnh giới hạn trục là sử dụng các phương thức plt.xlim()
và plt.ylim()
:
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 hiển thị trục nào đó theo chiều ngược lại, bạn có thể đơn giản chỉ cần đảo ngược thứ tự của các đối số:
plt.plot(x, np.sin(x))plt.xlim(10, 0)plt.ylim(1.2, -1.2);
Một phương thức liên quan hữu ích là plt.axis()
(lưu ý ở đây là sự nhầm lẫn tiềm năng giữa axes với e, và axis với i).Phương thức plt.axis()
cho phép bạn đặt các giới hạn x
và y
trong một cuộc gọi duy nhất, bằng cách truyền một danh sách xác định [xmin, xmax, ymin, ymax]
:
plt.plot(x, np.sin(x))plt.axis([-1, 11, -1.5, 1.5]);
Phương thức plt.axis()
còn cho phép bạn làm thậm chí hơn nữa, cho phép bạn làm những điều như siết chặt giới hạn xung quanh biểu đồ hiện tại một cách tự động:
plt.plot(x, np.sin(x))plt.axis('tight');
Nó cho phép thậm chí các chỉ định cấp cao 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 x
bằng một đơn vị trong y
:
plt.plot(x, np.sin(x))plt.axis('equal');
Để 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 thức plt.axis
, hãy tham khảo docstring của plt.axis
.
Đặt nhãn cho Đồ thị¶
Như phần cuối của phần này, chúng ta sẽ tìm hiểu qua về nhãn của biểu đồ: tiêu đề, nhãn trục và huy chương đơn giản.
Tiêu đề và nhãn trục là nhãn đơn giản nhất như vậy – có các phương pháp có thể được sử dụng để nhanh chóng thiết lập chúng:
plt.plot(x, np.sin(x))plt.title("A Sine Curve")plt.xlabel("x")plt.ylabel("sin(x)");
Vị trí, kích thước và kiểu dáng của những 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à các chuỗi tài liệu của mỗi chức năng này.
Khi hiển thị nhiều dòng trên một trục duy nhất, việc tạo một huy hiệu biểu thị cho mỗi loại đường có thể hữu ích.Một lần nữa, Matplotlib có một cách tích hợp để nhanh chóng tạo một huy hiệu như vậy.Việc này được thực hiện thông qua phương thức (như bạn đã đoán) plt.legend()
.Dù có một vài cách hợp lệ để sử dụng điều này, tôi thấy dễ nhất là chỉ định nhãn cho mỗi dòng bằng cách sử dụng từ khóa label
của hàm đồ thị:
plt.plot(x, np.sin(x), '-g', label='sin(x)')plt.plot(x, np.cos(x), ':b', label='cos(x)')plt.axis('equal')plt.legend();
Như bạn có thể thấy, hàm plt.legend()
theo dõi kiểu dòng và màu sắc, và kết hợp chúng với nhãn chính xác.Thêm thông tin về việc chỉ định và định dạng chú thích biểu đồ có thể được tìm thấy trong docstring của plt.legend
; bên cạnh đó, chúng tôi sẽ đề cập đến một số tùy chọn chú thích tiên tiến hơn trong Tuỳ chỉnh Chú thích Biểu đồ.
Aside: Những vấn đề cần lưu ý với Matplotlib¶
Trong khi hầu hết các chức năng của plt
được dịch trực tiếp thành các phương thức của ax
(như plt.plot()
→ ax.plot()
, plt.legend()
→ ax.legend()
, v.v.), điều này không áp dụng cho tất cả các lệnh.Đặc biệt, các chức năng để đặt giới hạn, nhãn và tiêu đề đã được điều chỉnh một chút.Để chuyển đổi giữa các chức năng phong cách MATLAB và phương pháp hướng đối tượng, thực hiện các thay đổi sau:
plt.xlabel()
→ax.set_xlabel()
plt.ylabel()
→ax.set_ylabel()
plt.xlim()
→ax.set_xlim()
plt.ylim()
→ax.set_ylim()
plt.title()
→ax.set_title()
Trong giao diện hướng đối tượng đến vẽ đồ thị, thay vì gọi các hàm này một cách riêng lẻ, thường thì việc sử dụng phương thức ax.set()
để cùng lúc thiết lập tất cả các thuộc tính này sẽ thuận tiện hơn:
ax = plt.axes()ax.plot(x, np.sin(x))ax.set(xlim=(0, 10), ylim=(-2, 2), xlabel='x', ylabel='sin(x)', title='A Simple Plot');