Cara menyetel 'otomatis' untuk batas atas, tetapi tetap mempertahankan batas bawah dengan matplotlib.pyplot


112

Saya ingin menyetel batas atas sumbu y menjadi 'auto', tetapi saya ingin agar batas bawah sumbu y selalu nol. Saya mencoba 'auto' dan 'autorange', tapi sepertinya tidak berhasil. Terima kasih sebelumnya.

Ini kode saya:

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')

Jawaban:


104

Anda dapat lulus hanya leftatau rightke set_xlim:

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

Untuk sumbu y, gunakan bottomatau top:

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

1
Saya mendapat kesalahan saat melewati kiri untuk set_ylim. Saya menggunakan ini sebagai gantinya: plt.gca (). Set_ylim (ymin = 0) Terima kasih atas bantuan Anda.
— vietnastee

Anda juga dapat menggunakan plt.xlimatau plt.ylimuntuk mengatur batas sumbu saat ini.
— Chris

26
Ketika saya melakukan ini, batas atas menempel pada nilai apa pun yang dipakai jendela. Ini tidak tetap penskalaan otomatis.
— Elliot

8
Masalah yang sama dengan @Elliot di sini. Dapat diperbaiki dengan mengatur (satu sisi) ylim / xlim setelah memplot nilainya.
— fabianfuchs

5
Pastikan untuk mengatur batas setelah memplot data, atau batas atas akan default ke 1.
— Banana

37

Cukup tetapkan xlimsalah satu batasannya:

plt.xlim(xmin=0)

5
xmindan xmaxtidak lagi digunakan untuk mendukung leftdan rightdi Matplotlib 3.0.
— onewhaleid

12

Seperti yang disebutkan di atas dan menurut dokumentasi matplotlib, batas-x dari sumbu yang diberikan axdapat disetel menggunakan set_xlimmetode matplotlib.axes.Axeskelas.

Misalnya,

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

Satu batas dapat dibiarkan tidak berubah (misalnya batas kiri):

>>> 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)

Untuk mengatur batas x sumbu saat ini, matplotlib.pyplotmodul berisi xlimfungsi yang hanya membungkus matplotlib.pyplot.gcadan matplotlib.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

Demikian pula, untuk batas y, gunakan matplotlib.axes.Axes.set_ylimatau matplotlib.pyplot.ylim. Argumen kata kunci adalah topdan bottom.


3

Cukup tambahkan satu titik pada @silvio's: jika Anda menggunakan sumbu untuk membuat plot suka figure, ax1 = plt.subplots(1,2,1). Kemudian ax1.set_xlim(xmin = 0)juga berhasil!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.