Üst sınır için 'otomatik' nasıl ayarlanır, ancak matplotlib.pyplot ile sabit bir alt sınır korunur


112

Y ekseninin üst sınırını 'otomatik' olarak ayarlamak istiyorum, ancak y ekseninin alt sınırını her zaman sıfır olarak tutmak istiyorum. "Otomatik" ve "otomatik değiştirmeyi" denedim, ancak bunlar işe yaramıyor. Şimdiden teşekkür ederim.

İşte kodum:

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

Yanıtlar:


104

Sadece geçebilir leftya righthiç set_xlim:

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

Y ekseni için bottomveya kullanın top:

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

1
Set_ylim için soldan geçerken bir hata aldım. Bunun yerine bunu kullandım: plt.gca (). Set_ylim (ymin = 0) Yardımınız için teşekkürler.
— vietnastee

Geçerli eksen için sınırları ayarlamak için plt.xlimveya tuşunu da kullanabilirsiniz plt.ylim.
— Chris

26
Bunu yaptığımda, üst sınır pencerenin somutlaştırdığı değere bağlı kalır. Otomatik ölçeklendirme olarak kalmaz.
— Elliot

9
@Elliot ile aynı sorun burada. Değerleri çizdikten sonra (tek taraflı) ylim / xlim ayarlanarak sabitlenebilir.
— fabianfuchs

5
Verileri çizdikten sonra limiti ayarladığınızdan emin olun, aksi takdirde üst limit varsayılan olarak 1 olacaktır.
— Banana

37

Sadece xlimsınırlardan birini ayarlayın :

plt.xlim(xmin=0)

5
xminve Matplotlib 3.0 xmaxlehine leftve kullanımdan kaldırıldı right.
— onewhaleid

12

Daha önce bahsedildiği gibi ve matplotlib belgelerine göre, belirli bir eksenin x sınırları , sınıfın yöntemi axkullanılarak ayarlanabilir .set_xlimmatplotlib.axes.Axes

Örneğin,

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

Bir sınır değiştirilmeden bırakılabilir (örneğin, sol sınır):

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

Mevcut eksenin x sınırlarını ayarlamak için matplotlib.pyplotmodül, xlimyalnızca matplotlib.pyplot.gcave sarmalayan işlevi içerir 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

Benzer şekilde, y sınırları için matplotlib.axes.Axes.set_ylimveya kullanın matplotlib.pyplot.ylim. Anahtar kelime argümanları topve bottom.


3

@Silvio'nun üzerine bir nokta eklemeniz yeterli: beğenmek için eksen kullanıyorsanız figure, ax1 = plt.subplots(1,2,1). Sonra ax1.set_xlim(xmin = 0)da çalışır!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.