web-dev-qa-db-ja.com

matplotlibはylim値を取得します

Pythonからmatplotlibを使用して(plotおよびerrorbar関数を使用して)データをプロットしています。完全に独立した独立したプロットのセットをプロットし、それらをylim値に調整して、視覚的に簡単に比較できるようにする必要があります。

各プロットからylim値を取得して、それぞれ下限と上限のylim値の最小値と最大値を取得し、視覚的に比較できるようにプロットを調整するにはどうすればよいですか?

もちろん、データを分析して独自のカスタムylim値を作成することもできますが、それを行うにはmatplotlibを使用したいと思います。これを簡単に(そして効率的に)行う方法に関する提案はありますか?

matplotlibを使用してプロットするPython関数を次に示します。

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

axes.get_ylim()を使用するだけで、set_ylimと非常によく似ています。 docs から:

get_ylim()

Y軸の範囲を取得する[下、上]

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

それともそうではありませんか?

28
Adam Hughes

上記の良い答えを活用し、次のようにpltのみを使用していると仮定します

import matplotlib.pyplot as plt

次の例のように、plt.axis()を使用して4つのプロット制限をすべて取得できます。

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

上記のコードは、次の出力プロットを生成するはずです。 enter image description here

1
Thom Ives