Ü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.