2012-11-11 35 views
5

Có thể thiết lập ô để hiển thị thêm dữ liệu khi được mở rộng không?tự động thay đổi các giới hạn xem trên đổi kích thước matlotlib

Quy mô các ô Matplotlib khi được thay đổi kích thước. Để hiển thị một khu vực cụ thể có thể sử dụng set_xlim và như vậy trên trục. Tôi có một âm mưu giống như ecg hiển thị dữ liệu thời gian thực, giới hạn y của nó được xác định trước, nhưng tôi muốn xem thêm dữ liệu dọc theo x nếu tôi mở rộng cửa sổ hoặc chỉ có màn hình lớn.

Im sử dụng nó trong một ứng dụng pyside và tôi chỉ có thể thay đổi xlim về thay đổi kích thước nhưng tôi muốn giải pháp sạch hơn và chung chung hơn.

Trả lời

7

Một cách để thực hiện việc này là triển khai trình xử lý cho resize_event. Đây là một ví dụ ngắn làm thế nào điều này có thể được thực hiện. Bạn có thể sửa đổi nó cho nhu cầu của bạn:

import numpy as np 
import matplotlib.pyplot as plt 

def onresize(event): 
    width = event.width 
    scale_factor = 100. 
    data_range = width/scale_factor 
    start, end = plt.xlim() 
    new_end = start+data_range 
    plt.xlim((start, new_end)) 

if __name__ == "__main__": 

    fig = plt.figure() 
    ax = fig.add_subplot(111) 
    t = np.arange(100) 
    y = np.random.rand(100) 
    ax.plot(t,y) 
    plt.xlim((0, 10)) 
    cid = fig.canvas.mpl_connect('resize_event', onresize) 
    plt.show() 
+1

sử dụng 'fig.dpi' làm' scale_factor' làm cho nó tốt hơn – mindless

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