2014-09-30 3 views
50

Я использую matplotlib для построения данных (с использованием plot и errorbar функций) от Python. Мне нужно построить набор полностью отдельных и независимых графиков, а затем настроить их значения ylim, чтобы их можно было визуально сравнить.matplotlib получить значения ylim

Как я могу получить значения ylim из каждого графика, чтобы я мог взять min и max нижнего и верхнего значений илим, соответственно, и отрегулировать графики, чтобы их можно было визуально сравнить?

Конечно, я мог бы просто проанализировать данные и придумать свои собственные значения ylim ... но я бы хотел использовать matplotlib, чтобы сделать это для меня. Любые предложения о том, как легко (и эффективно) сделать это?

Вот моя функция Python, что участки с помощью 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) 

ответ

64

axes.get_ylim() Просто используйте, это очень похоже на set_ylim. Из docs:

get_ylim()

Получить диапазон по оси Y. [снизу, сверху]

+0

Есть ли способ получить ограничение площади графика, а не ограничение по оси? Черный ограничивающий прямоугольник немного выше этих значений. –

18
ymin, ymax = axes.get_ylim() 

Если вы используете 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='.') 

    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) 

Или это не так?

+0

Предлагаемое упрощение может оказаться полезным. Однако я, возможно, захочу использовать оси самостоятельно. Честно говоря, не знаю. – synaptik

+1

Я, я должен признать, что в любой заданной программе matplotlib я неоднократно возвращаюсь туда и обратно! –

Смежные вопросы