Ai đó có thể giải thích cho tôi chính xác việc sử dụng là %matplotlib inline
gì?
Ai đó có thể giải thích cho tôi chính xác việc sử dụng là %matplotlib inline
gì?
Câu trả lời:
%matplotlib
là một chức năng kỳ diệu trong IPython. Tôi sẽ trích dẫn các tài liệu liên quan ở đây để bạn đọc cho thuận tiện:
IPython có một bộ 'hàm ma thuật' được xác định trước mà bạn có thể gọi bằng cú pháp kiểu dòng lệnh. Có hai loại ma thuật, hướng dòng và hướng tế bào. Các phép thuật dòng được tiền tố với ký tự% và hoạt động giống như các lệnh gọi dòng lệnh của OS: chúng nhận làm đối số cho phần còn lại của dòng, trong đó các đối số được truyền mà không có dấu ngoặc đơn hoặc dấu ngoặc kép. Các phép thuật dòng có thể trả về kết quả và có thể được sử dụng ở phía bên phải của bài tập. Các phép thuật di động được thêm tiền tố với %% và chúng là các hàm nhận làm đối số không chỉ phần còn lại của dòng, mà cả các dòng bên dưới nó trong một đối số riêng biệt.
%matplotlib inline
đặt phụ trợ của matplotlib thành phụ trợ 'nội tuyến' :
Với phần cuối này, đầu ra của các lệnh vẽ biểu đồ được hiển thị nội tuyến trong các giao diện như sổ ghi chép Jupyter, ngay bên dưới ô mã đã tạo ra nó. Các ô kết quả sau đó cũng sẽ được lưu trữ trong tài liệu sổ ghi chép.
Khi sử dụng phụ trợ 'nội tuyến', biểu đồ matplotlib của bạn sẽ được bao gồm trong sổ ghi chép của bạn, bên cạnh mã. Cũng có thể đáng đọc Cách tạo dòng máy tính xách tay IPython matplotlib nội tuyến để tham khảo về cách sử dụng nó trong mã của bạn.
Nếu bạn cũng muốn tương tác, bạn có thể sử dụng phụ trợ nbagg với %matplotlib notebook
(trong IPython 3.x), như được mô tả ở đây .
Miễn là bạn đang chạy IPython, %matplotlib inline
sẽ làm cho kết quả đầu ra cốt truyện của bạn xuất hiện và được lưu trữ trong sổ ghi chép.
Theo tài liệu
Để thiết lập điều này, trước khi thực hiện bất kỳ âm mưu hoặc nhập khẩu
matplotlib
nào, bạn phải thực thi%matplotlib magic command
. Điều này thực hiện thiết lập hậu trường cần thiết để IPython hoạt động chính xác cùng vớimatplotlib
; tuy nhiên, nó không thực sự thực thi bất kỳ lệnh nhập Python nào, nghĩa là không có tên nào được thêm vào không gian tên.Một phụ trợ đặc biệt thú vị, được cung cấp bởi IPython, là
inline
phụ trợ. Điều này chỉ có sẵn cho Jupyter Notebook và Jupyter QtConsole. Nó có thể được gọi như sau:%matplotlib inline
Với phần cuối này, đầu ra của các lệnh vẽ biểu đồ được hiển thị nội tuyến trong các giao diện như sổ ghi chép Jupyter, ngay bên dưới ô mã đã tạo ra nó. Các ô kết quả sau đó cũng sẽ được lưu trữ trong tài liệu sổ ghi chép.
Nếu bạn muốn thêm các ô vào sổ ghi chép Jupyter của mình, thì đó %matplotlib inline
là một giải pháp chuẩn. Và có những lệnh ma thuật khác sẽ sử dụng matplotlib
tương tác trong Jupyter.
%matplotlib
: bất kỳ plt
lệnh cốt truyện nào bây giờ sẽ khiến một cửa sổ hình mở ra và các lệnh tiếp theo có thể được chạy để cập nhật cốt truyện. Một số thay đổi sẽ không tự động rút ra, để buộc cập nhật, sử dụngplt.draw()
%matplotlib notebook
: sẽ dẫn đến các ô tương tác được nhúng trong sổ ghi chép, bạn có thể phóng to và thay đổi kích thước hình
%matplotlib inline
: chỉ vẽ hình ảnh tĩnh trong sổ ghi chép
Bắt đầu với IPython 5.0 và matplotlib 2.0, bạn có thể tránh sử dụng ma thuật cụ thể của IPython và sử dụng
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()
cũng có những lợi thế khi làm việc bên ngoài IPython.
inline
, các ô được tạo trong các cửa sổ bên ngoài và bạn cần sử dụng display () để hiển thị chúng trong sổ ghi chép.
Nếu bạn không biết phụ trợ là gì, bạn có thể đọc phần này: https://matplotlib.org/tutorials/int sinhtory / usage.html # backends
Một số người sử dụng matplotlib tương tác từ vỏ python và có các cửa sổ âm mưu bật lên khi họ gõ lệnh. Một số người chạy sổ ghi chép Jupyter và vẽ sơ đồ nội tuyến để phân tích dữ liệu nhanh chóng. Những người khác nhúng matplotlib vào các giao diện người dùng đồ họa như wxpython hoặc pygtk để xây dựng các ứng dụng phong phú. Một số người sử dụng matplotlib trong các tập lệnh bó để tạo hình ảnh mô tả từ mô phỏng số và những người khác vẫn chạy các máy chủ ứng dụng web để tự động phục vụ đồ thị. Để hỗ trợ tất cả các trường hợp sử dụng này, matplotlib có thể nhắm mục tiêu các đầu ra khác nhau và mỗi khả năng này được gọi là phụ trợ; "frontend" là mã phải đối mặt với người dùng, tức là mã âm mưu, trong khi "phụ trợ" thực hiện tất cả công việc khó khăn phía sau hậu trường để tạo ra hình.
Vì vậy, khi bạn gõ% matplotlib nội tuyến, nó sẽ kích hoạt phụ trợ nội tuyến. Như đã thảo luận trong các bài viết trước:
Với phần cuối này, đầu ra của các lệnh vẽ biểu đồ được hiển thị nội tuyến trong các giao diện như sổ ghi chép Jupyter, ngay bên dưới ô mã đã tạo ra nó. Các ô kết quả sau đó cũng sẽ được lưu trữ trong tài liệu sổ ghi chép.
Điều đó chỉ có nghĩa là bất kỳ biểu đồ nào chúng tôi đang tạo như một phần của mã của chúng tôi sẽ xuất hiện trong cùng một sổ ghi chép và không nằm trong cửa sổ riêng biệt sẽ xảy ra nếu chúng tôi không sử dụng câu lệnh ma thuật này.
Để giải thích rõ ràng:
Nếu bạn không thích nó như thế này:
thêm vào %matplotlib inline
và ở đó bạn có nó trong máy tính xách tay jupyter của bạn.
TL; DR
%matplotlib inline
- Hiển thị nội tuyến đầu raHạt nhân IPython có khả năng hiển thị các ô bằng cách thực thi mã. Hạt nhân IPython được thiết kế để hoạt động trơn tru với thư viện âm mưu matplotlib để cung cấp chức năng này.
%matplotlib
là một lệnh ma thuật thực hiện thiết lập hậu trường cần thiết để IPython hoạt động chính xác với nhaumatplotlib
; nó không thực thi bất kỳ lệnh nhập Python nào, nghĩa là không có tên nào được thêm vào không gian tên.
%matplotlib
(chỉ có sẵn cho Jupyter Notebook và Jupyter QtConsole)
%matplotlib inline
(giá trị hợp lệ 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template'
)
%matplotlib gtk
Ví dụ - GTK3Agg - Kết xuất Agg thành khung vẽ GTK 3.x (yêu cầu PyGObject và pycairo hoặc cairocffi).
Thêm chi tiết về phụ trợ tương tác matplotlib: tại đây
Bắt đầu với
IPython 5.0
vàmatplotlib 2.0
bạn có thể tránh việc sử dụng ma thuật cụ thể của IPython và việc sử dụngmatplotlib.pyplot.ion()
/matplotlib.pyplot.ioff()
cũng có những lợi thế khi làm việc bên ngoài IPython.
Tham khảo: IPython Rich Output - Âm mưu tương tác
Với điều kiện bạn đang chạy Jupyter Notebook, lệnh nội tuyến% matplotlib sẽ làm cho kết quả đầu ra cốt truyện của bạn xuất hiện trong sổ ghi chép, cũng có thể được lưu trữ.
Không bắt buộc phải viết điều đó. Nó hoạt động tốt với tôi mà không có ( %matplotlib
) chức năng ma thuật. Tôi đang sử dụng trình biên dịch Sypder, một trình biên dịch đi kèm trong Anaconda.