Cách đặt 'tự động' cho giới hạn trên, nhưng giữ giới hạn dưới cố định với matplotlib.pyplot


112

Tôi muốn đặt giới hạn trên của trục y thành 'tự động', nhưng tôi muốn giữ giới hạn dưới của trục y luôn bằng 0. Tôi đã thử 'auto' và 'autorange', nhưng những thứ đó dường như không hoạt động. Cảm ơn bạn trước.

Đây là mã của tôi:

import matplotlib.pyplot as plt

def plot(results_plt,title,filename):

    ############################
    # Plot results

    # mirror result table such that each parameter forms an own data array
    plt.cla()
    #print results_plt
    XY_results = []

    XY_results = zip( *results_plt)

    plt.plot(XY_results[0], XY_results[2], marker = ".")

    plt.title('%s' % (title) )
    plt.xlabel('Input Voltage [V]')
    plt.ylabel('Input Current [mA]')

    plt.grid(True)
    plt.xlim(3.0, 4.2)  #***I want to keep these values fixed"
    plt.ylim([0, 80]) #****CHANGE**** I want to change '80' to auto, but still keep 0 as the lower limit 
    plt.savefig(path+filename+'.png')

Câu trả lời:


104

Bạn có thể chuyển chỉ lefthoặc rightđến set_xlim:

plt.gca().set_xlim(left=0)

Đối với trục y, sử dụng bottomhoặc top:

plt.gca().set_ylim(bottom=0)

1
Tôi đã gặp lỗi khi vượt qua bên trái để tới set_ylim. Tôi đã sử dụng cái này để thay thế: plt.gca (). Set_ylim (ymin = 0) Cảm ơn bạn đã giúp đỡ.
vietnastee, 31-07-12

Bạn cũng có thể sử dụng plt.xlimhoặc plt.ylimđể đặt giới hạn cho trục hiện tại.
Chris

26
Khi tôi làm điều này, giới hạn trên dính vào bất kỳ giá trị nào mà cửa sổ khởi tạo. Nó không tiếp tục tự động điều chỉnh tỷ lệ.
Elliot

8
Vấn đề tương tự như @Elliot ở đây. Có thể được khắc phục bằng cách thiết lập ylim / xlim (một mặt) sau khi ploting các giá trị.
fabianfuchs

5
Hãy chắc chắn để thiết lập các giới hạn sau khi âm mưu dữ liệu, hoặc giới hạn trên sẽ mặc định 1.
Chuối

37

Chỉ cần đặt xlimcho một trong các giới hạn:

plt.xlim(xmin=0)

5
xminxmaxđã được phản đối ủng hộ leftrighttrong Matplotlib 3.0.
onewhaleid 23/09/18

12

Như đã nói ở trên và theo tài liệu matplotlib, giới hạn x của một trục nhất định axcó thể được thiết lập bằng cách sử dụng set_xlimphương thức của matplotlib.axes.Axeslớp.

Ví dụ,

>>> ax.set_xlim(left_limit, right_limit)
>>> ax.set_xlim((left_limit, right_limit))
>>> ax.set_xlim(left=left_limit, right=right_limit)

Một giới hạn có thể được giữ nguyên (ví dụ: giới hạn bên trái):

>>> ax.set_xlim((None, right_limit))
>>> ax.set_xlim(None, right_limit)
>>> ax.set_xlim(left=None, right=right_limit)
>>> ax.set_xlim(right=right_limit)

Để đặt giới hạn x của trục hiện tại, matplotlib.pyplotmô-đun chứa xlimhàm chỉ kết thúc matplotlib.pyplot.gcamatplotlib.axes.Axes.set_xlim.

def xlim(*args, **kwargs):
    ax = gca()
    if not args and not kwargs:
        return ax.get_xlim()
    ret = ax.set_xlim(*args, **kwargs)
    return ret

Tương tự, đối với giới hạn y, hãy sử dụng matplotlib.axes.Axes.set_ylimhoặc matplotlib.pyplot.ylim. Các đối số từ khóa là topbottom.


3

Chỉ cần thêm một điểm trên @silvio 's: nếu bạn sử dụng trục để vẽ biểu đồ như thế nào figure, ax1 = plt.subplots(1,2,1). Sau đó, ax1.set_xlim(xmin = 0)cũng hoạt động!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.