matplotlib ylim değerlerini al


115

Python'dan matplotlibverileri (kullanarak plotve errorbarişlevler) çizmek için kullanıyorum . Tamamen ayrı ve bağımsız bir dizi çizim yapmalı ve ardından ylimdeğerlerini kolayca görsel olarak karşılaştırılabilecek şekilde ayarlamalıyım .

ylimSırasıyla alt ve üst ylim değerlerinin min ve max değerlerini alabilmek ve grafikleri görsel olarak karşılaştırılabilecek şekilde ayarlayabilmek için her bir arsadan değerleri nasıl alabilirim ?

Elbette, verileri analiz edip kendi özel ylimdeğerlerimi bulabilirim ... ama bunu benim matplotlibiçin yapmak isterim. Bunun nasıl kolayca (ve verimli bir şekilde) yapılacağına dair herhangi bir öneriniz var mı?

Kullanarak çizim yapan Python işlevim matplotlib:

import matplotlib.pyplot as plt

def myplotfunction(title, values, errors, plot_file_name):

    # plot errorbars
    indices = range(0, len(values))
    fig = plt.figure()
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.')

    # axes
    axes = plt.gca()
    axes.set_xlim([-0.5, len(values) - 0.5])
    axes.set_xlabel('My x-axis title')
    axes.set_ylabel('My y-axis title')

    # title
    plt.title(title)

    # save as file
    plt.savefig(plot_file_name)

    # close figure
    plt.close(fig)

Yanıtlar:


159

Sadece kullan axes.get_ylim(), çok benzer set_ylim. Gönderen docs :

get_ylim ()

Y ekseni aralığını [alt, üst] alın


2
Eksen sınırı yerine grafik alanı sınırını almanın bir yolu var mı? Siyah sınırlayıcı dikdörtgen bu değerlerin biraz ötesindedir.
Peter Ehrlich

@PeterEhrlich Bu sadece marjlar.
ilija139

12
plt.gca().get_ylim()Kullanışlı buluyorum - ekstra eksen tanımına gerek yok.
Matthias Arras

Alternatif olarak, fig, ax = plt.subplots()tüm işlevlerimi bir figveyaax
BallpointBen

34
 ymin, ymax = axes.get_ylim()

pltApi'yi doğrudan kullanıyorsanız , eksenlere yapılan çağrıları tamamen önleyebilirsiniz:

def myplotfunction(title, values, errors, plot_file_name):

    # plot errorbars
    indices = range(0, len(values))
    fig = plt.figure()
    plt.errorbar(tuple(indices), tuple(values), tuple(errors), marker='.')

    plt.xlim([-0.5, len(values) - 0.5])
    plt.xlabel('My x-axis title')
    plt.ylabel('My y-axis title')

    # title
    plt.title(title)

    # save as file
    plt.savefig(plot_file_name)

   # close figure
    plt.close(fig)

10

Yukarıdaki iyi yanıtlardan yararlanarak ve yalnızca plt'yi şu şekilde kullandığınızı varsayarak

import matplotlib.pyplot as plt

daha sonra plt.axis()aşağıdaki örnekteki gibi kullanarak dört çizim sınırının tümünü elde edebilirsiniz .

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8]  # fake data
y = [1, 2, 3, 4, 3, 2, 5, 6]

plt.plot(x, y, 'k')

xmin, xmax, ymin, ymax = plt.axis()

s = 'xmin = ' + str(round(xmin, 2)) + ', ' + \
    'xmax = ' + str(xmax) + '\n' + \
    'ymin = ' + str(ymin) + ', ' + \
    'ymax = ' + str(ymax) + ' '

plt.annotate(s, (1, 5))

plt.show()

Yukarıdaki kod aşağıdaki çıktı grafiğini üretmelidir. görüntü açıklamasını buraya girin

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.