2012-10-15 40 views
8

Tôi đã tìm kiếm một cách để có thể chọn chuỗi nào hiển thị trên một ô, sau khi tạo một ô.Lựa chọn tương tác của chuỗi trong một âm mưu matplotlib

Tôi cần điều này vì tôi thường có các ô có nhiều chuỗi. họ có quá nhiều âm mưu cùng một lúc, và tôi cần phải nhanh chóng và tương tác chọn chuỗi nào hiển thị. Lý tưởng nhất là sẽ có một cửa sổ với một danh sách các chuỗi trong ô và các hộp kiểm, nơi mà chuỗi với hộp kiểm đã chọn được hiển thị.

Có ai biết nếu điều này đã được triển khai ở đâu đó không ?, nếu không thì ai đó có thể hướng dẫn tôi về cách tôi có thể tự làm?

Cảm ơn!

Omar

Trả lời

8

Tất cả phụ thuộc vào bao nhiêu nỗ lực bạn sẵn sàng để làm và những gì yêu cầu chính xác là, nhưng bạn có thể đặt cược nó đã được triển khai ở đâu đó :-)

Nếu mục đích chủ yếu là không làm lộn xộn hình ảnh, nó có thể đủ để sử dụng các khả năng tích hợp sẵn; bạn có thể tìm mã có liên quan trong thư viện ví dụ matplotlib:

Nếu bạn thực sự muốn có một giao diện người dùng, vì vậy bạn có thể bảo vệ hiệu quả hoạt động bằng cách hạn chế số lượng lô/dữ liệu, bạn thường sẽ sử dụng một hộp công cụ GUI như GTK, QT hoặc WX. Nhìn vào đây để một số điều và mã ví dụ:

2

Một danh sách với hộp kiểm sẽ ổn thôi nếu bạn có một vài lô hoặc ít hơn, nhưng đối với nhiều âm mưu một popup menu có lẽ sẽ tốt hơn. Tôi không chắc chắn cho dù một trong số này là có thể với matplotlib mặc dù.

Cách tôi thực hiện điều này một lần là sử dụng thanh trượt để chọn cốt truyện từ danh sách - về cơ bản bạn sử dụng thanh trượt để đặt chỉ mục của chuỗi sẽ được hiển thị. Tôi đã có một vài trăm chuỗi cho mỗi tập dữ liệu, do đó, đó là một cách hay để nhanh chóng lướt qua chúng.

Mã của tôi cho việc thiết lập này là xấp xỉ như thế này:

fig = pyplot.figure() 
slax = self.fig.add_axes((0.1,0.05,0.35,0.05)) 
sl = matplotlib.widgets.Slider(slax, "Trace #", 0, len(plotlist), valinit=0.0) 
def update_trace(): 
    ax.clear() 
    tracenum = int(np.floor(sl.val)) 
    ax.plot(plotlist[tracenum]) 
    fig.canvas.draw() 
sl.on_changed(update_trace) 
ax = self.fig.add_axes((0.6, 0.2, 0.35, 0.7)) 
fig.add_subplot(axes=self.traceax) 
update_trace() 

Dưới đây là một ví dụ:

Plot image

Các vấn đề liên quan