2013-07-05 9 views
15

tôi thấy hai câu trả lời: Animated graphs in ipython notebook, How to grab matplotlib plot as html in ipython notebook?Có cách nào để tạo các ô tương tác (a la D3) trong sổ ghi chép IPython không?

Nhưng họ không giải quyết tương tác. Tôi muốn hiển thị một cốt truyện với 2-3 đường cong và cho phép người dùng di chuyển các đường cong đó để nhận thêm chi tiết hoặc kiểm soát các tham số được sử dụng để tạo các đường cong đó từ hộp tổ hợp

Trả lời

7

Tôi không tin tiêu chuẩn matplotlib lô có khả năng tương tác mà bạn muốn. Chaco có thể làm đồ thị tương tác, nhưng không có trong sổ ghi chép ipython, AFAICT. Đặt cược tốt nhất của bạn có thể là Bokeh. Nó xuất ra Javascript/HTML, có thể làm đồ thị tương tác, và có một ví dụ về việc sử dụng nó từ ipython.

+1

không may là bokeh sẽ thực hiện canvas như trái ngược với svg, vì vậy khả năng tương tác sẽ bị cản trở nghiêm trọng. cốt truyện dựa trên d3js, cho phép trải nghiệm phong phú hơn (imo) –

1

Bạn có thể chạy javascript thẳng từ IPython máy tính xách tay (%%html%%javascript), vì vậy nó phải có khả năng chạy D3 mã. Kiểm tra số video này. Cách chính xác mà trong đó điều này sẽ được thực hiện không được đặt trong đá được nêu ra, vì đây là một tính năng cho IPython 2.0. Hiện có rất nhiều hack có sẵn, cũng như các dự án cố gắng chuyển một số đặc điểm của D3 sang Python (chẳng hạn như bokehpython-nvd3).

Tôi chưa thử nghiệm bất kỳ điều nào trong số này. thiên vị của riêng tôi là để thử ví dụ dưới đây đầu tiên, đó là tĩnh, nhưng sử dụng D3 trực tiếp (vì vậy nó nên lý thuyết làm việc cho lô tương tác):

7

Bạn có thể muốn xem Plotly. Chúng hiển thị các ô tương tác D3 bên trong Sổ tay IPython (ví dụ: here. Bạn cũng có thể xuất dưới dạng hình ảnh tĩnh và thu phóng, di chuột, xoay và xem văn bản trên di chuột. Tương tác là một trong các quảng cáo chiêu hàng mà họ đang nhấn mạnh. cũng có thể sử dụng IPython widgets bên trong Máy tính xách tay, mang đến cho bạn kiểm soát nhiều hơn và các tùy chọn Ví dụ:..

enter image description here

+0

+1 cho một con trỏ đi đúng hướng. Nếu bạn muốn tương tác, các ô trực tuyến được nhúng trong một sổ ghi chép IPython, (như tôi) có lẽ là một lựa chọn tốt hơn so với bokeh (tôi chỉ có thể nhận các ô phân tán trực tuyến để hoạt động trong bokeh, không phải hộp biểu đồ & ria, v.v ...). – nikosd

+0

Có phiên bản Plotly miễn phí không? (một trong đó không yêu cầu người dùng để giữ cho lô của họ công khai, đó là) –

+0

@ eldad-a có vẻ như bạn có thể âm mưu riêng tư, tôi vẽ một số ít, xem https://plot.ly/python/getting-started/ – eqzx

9

kiểm tra câu trả lời sau tại iPython: Manipulate-like command

cũng như hai hướng sau đây :

  1. MPLD3: Bringing Matplotlib to the Browser (được đề cập trong liên kết ở trên)
  2. IPython interact/ive như thúc đẩy trong IPython - The Attributes ofSoftware and How They Affect Our Work - Brian Granger gần 32m: 12s; và có sẵn tại IPython's github
+0

cảm ơn cho các liên kết trên mpld3 – Alleo

+2

+1 mpld3 là khá ngọt ngào. Bạn chỉ có thể nhập nó và chạy 'mpld3.enable_notebook()' bên dưới cuộc gọi '% pylab inline' của bạn, và tất cả các ô trở nên tương tác. Mặc dù có thể hơi chậm. – naught101

2

Một giải pháp khác có thể là thư viện Charts. Nó cho phép bạn sử dụng thư viện javascript tuyệt vời Highcharts để tạo các ô đẹp và tương tác ra khỏi hộp.

Một số tính năng:

  • lô Vector mà bạn có thể tải về tại .png, .jpg và các định dạng .svg, do đó bạn sẽ không bao giờ chạy vào vấn đề giải quyết.
  • bảng xếp hạng tương tác (zoom, slide, di chuột qua điểm, ...)
  • Có thể sử dụng trong một máy tính xách tay IPython
  • Khám phá hàng trăm cấu trúc dữ liệu cùng một lúc bằng cách sử dụng đồng bộ âm mưu khả năng.

Disclaimer: Tôi là nhà phát triển của thư viện answeres

1

khác ở đây dường như bị lỗi thời. IPython 2.0 đã hỗ trợ cho các tiện ích tương tác. Read the docs including some examples, nhưng lưu ý rằng nbviewer.ipython.org không hiển thị các tiện ích tương tác. Sao chép & dán các ví dụ vào try.jupyter.org hoạt động.