PyPlotのY軸を反転


265

ランダムなx、y座標の束が散布図グラフにあります。現在、Y軸は0から始まり、最大値に達します。Y軸を最大値から開始して、0にしたいと思います。

points = [(10,5), (5,11), (24,13), (7,8)]    
x_arr = []
y_arr = []
for x,y in points:
    x_arr.append(x)
    y_arr.append(y)
plt.scatter(x_arr,y_arr)

回答:


557

これをさらに簡単にする新しいAPIがあります。

plt.gca().invert_xaxis()

および/または

plt.gca().invert_yaxis()

49
軸を反転する前に軸の制限を設定する必要があることに注意してください。そうしないと、軸が再び反転しなくなります。
TheBigH 2016年

55

DisplacedAussieの答えは正しいですが、通常、より短い方法は問題の単一の軸を逆にすることです:

plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])

どこgca()関数は、現在のAxesのインスタンスを返し、[::-1]リストを反転させます。


3
それは私にとってより良い答えのようです。:)
DisplacedAussie

18

matplotlib.pyplot.axis()を使用します

axis([xmin, xmax, ymin, ymax])

したがって、最後に次のようなものを追加できます。

plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])

両端にパディングを入れて、端点が境界線上に置かれないようにすることもできます。


これは最初の2つの回答よりも有利です。毎回向きを変えるのではなく、向きを修正します(ループで呼び出す必要がある場合は問題です)。
Bas Swinckels

16

pylabモードでipythonを使用している場合、

plt.gca().invert_yaxis()
show()

これshow()は、現在の図を更新するために必要です。


9

散布図のAxesオブジェクトによって公開された関数を使用することもできます

scatter = plt.scatter(x, y)
ax = scatter.axes
ax.invert_xaxis()
ax.invert_yaxis()

8

上記の方法と同様の別の方法はplt.ylim、たとえば以下を使用することです。

plt.ylim(max(y_array), min(y_array))

この方法は、Y1またはY2、あるいはその両方で複数のデータセットを合成しようとしているときに機能します。


3

ylim()を使用することは、あなたの目的にとって最善のアプローチかもしれません:

xValues = list(range(10))
quads = [x** 2 for x in xValues]
plt.ylim(max(quads), 0)
plt.plot(xValues, quads)

結果は:ここに画像の説明を入力してください


2

または、matplotlib.pyplot.axis()関数を使用して、プロット軸のいずれかを反転できます。

ax = matplotlib.pyplot.axis()
matplotlib.pyplot.axis((ax[0],ax[1],ax[3],ax[2]))

または、X軸のみを反転したい場合は、

matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))

実際、両方の軸を反転できます。

matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))

0

matplotlibを使用している場合、次のことを試すことができます。 matplotlib.pyplot.xlim(l, r) matplotlib.pyplot.ylim(b, t)

これらの2本の線は、x軸とy軸の範囲をそれぞれ設定します。x軸の場合、最初の引数lは左端の値を設定し、2番目の引数rは右端の値を設定します。y軸の場合、最初の引数bは一番下の値を設定し、2番目の引数tは一番上の値を設定します。

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