14

以下MWEは単純な散布図を生成します。

import numpy as np
import matplotlib.pyplot as plt

# Generate some random two-dimensional data:
m1 = np.random.normal(size=100)
m2 = np.random.normal(scale=0.5, size=100)

# Plot data with 1.0 max limit in y.
plt.figure()
# Set x axis limit.
plt.xlim(0., 1.0)
# Plot points.
plt.scatter(m1, m2)
# Show.
plt.show()

このプロットでは、x 軸の範囲は に設定されてい[0., 1.]ます。y 軸の上限を 1に設定する必要があります。下限は最小値のままにしm2ます (つまりpython、下限を決めさせます)。

この特定のケースでは、使用することもできますplt.ylim(min(m2), 1.0)が、実際のコードははるかに複雑で、多くのことがプロットされているため、これを行うことは実際にはオプションではありません.

私は設定しようとしました:

plt.ylim(top=1.)

また:

plt.gca().set_ylim(top=1.)

ここでアドバイスされているように、上限に 'auto' を設定する方法ですが、 matplotlib.pyplot で固定の下限を維持しますが、どちらのコマンドも機能しないようです。どちらも y 軸の上限を 1 に正しく設定していますが、下限を 0 に強制しています。これは望ましくありません。

と を使用Python 2.7.3してMatplotlib 1.2.1います。

4

1 に答える 1

23

単純に大量のデータがプロットされていることが懸念される場合は、プロットの下限 y 制限を取得して、制限を設定するときにそれを使用してみませんか?

plt.ylim(plt.ylim()[0], 1.0)

または、特定の軸についても同様です。少し醜いですが、動作しない理由がわかりません。


問題は、実際には、プロットの前に制限を設定すると自動スケーリングが無効になるという事実にあります。x 軸と y 軸の両方の制限は、既定では です(0.0, 1.0)。これが、y の下限が 0 のままになっている理由です。

解決策は、すべてのプロット コマンドを呼び出した後にプロット リミットを設定することです。または、必要に応じて自動スケーリングを再度有効にすることができます

于 2013-09-07T19:11:13.687 に答える