matplotlibはylim値を取得します


115

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

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

もちろん、データを分析して独自のカスタム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)

回答:


159

使用するだけでaxes.get_ylim()、に非常に似ていset_ylimます。ドキュメントから:

get_ylim()

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


2
軸の制限ではなく、グラフ領域の制限を取得する方法はありますか?黒い境界の長方形は、これらの値をわずかに超えています。
Peter Ehrlich

@PeterEhrlichそれはマージンです。
ilija139

11
私はplt.gca().get_ylim()便利だと思います-追加の軸を定義する必要はありません。
Matthias Arras

また、私が使用することを好むfig, ax = plt.subplots()、その後のいずれかを通るルートのすべての私の機能をfigax
BallpointBen

34
 ymin, ymax = axes.get_ylim()

pltAPIを直接使用している場合は、Axesの呼び出しを完全に回避できます。

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

上記の良い答えを活用して、あなたが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()

上記のコードは、次の出力プロットを生成します。 ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.