PyPlot'ta Ters Y Ekseni


265

Rasgele x, y koordinatları bir grup ile bir dağılım grafiği var. Şu anda Y Ekseni 0'dan başlar ve maksimum değere yükselir. Y Ekseninin maksimum değerde başlamasını ve 0'a çıkmasını istiyorum.

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)

Yanıtlar:


557

Bunu daha da basitleştiren yeni bir API var.

plt.gca().invert_xaxis()

ve / veya

plt.gca().invert_yaxis()

49
Ekseni ters çevirmeden önce eksen sınırlarını ayarlamanız gerektiğini unutmayın, aksi takdirde tekrar ters çevirir.
TheBigH

55

DisplacedAussie'nin cevabı doğrudur, ancak genellikle daha kısa bir yöntem sadece söz konusu tek ekseni tersine çevirmektir:

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

burada gca()işlev geçerli Axes örneğini [::-1]döndürür ve listeyi tersine çevirir.


3
Bu bana daha iyi bir cevap gibi görünüyor. :)
DisplacedAussie

18

Matplotlib.pyplot.axis () kullanın

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

Sonunda böyle bir şey ekleyebilirsiniz:

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

Her ne kadar uç noktalarda kenarda oturmamak için dolgu isteyebilirsiniz.


Bu, her seferinde çevirmemek için yönlendirmeyi düzelten ilk iki cevaba göre bir avantaja sahiptir (bu, bir döngüde çağırmanız gerekiyorsa bir sorundur).
Bas Swinckels

16

Modda ipython kullanıyorsanız pylab, o zaman

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

show()o anki rakam güncelleştirmek yapmak için gereklidir.


9

Dağılım grafiğinin eksen nesnesinin gösterdiği işlevi de kullanabilirsiniz

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

8

Yukarıda açıklananlara benzer bir başka yöntem, plt.ylimörneğin kullanmaktır :

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

Y1 ve / veya Y2 üzerinde birden çok veri kümesini birleştirmeye çalıştığımda bu yöntem benim için çalışıyor


3

ylim () kullanmak, amacınız için en iyi yaklaşım olabilir:

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

sonuçlanacak:resim açıklamasını buraya girin


2

Alternatif olarak, çizim eksenini tersine çevirmenize izin veren matplotlib.pyplot.axis () işlevini kullanabilirsiniz.

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

Veya yalnızca X eksenini ters çevirmeyi tercih ederseniz,

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

Gerçekten, her iki ekseni de tersine çevirebilirsiniz:

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

0

Matplotlib kullanıyorsanız deneyebilirsiniz: matplotlib.pyplot.xlim(l, r) matplotlib.pyplot.ylim(b, t)

Bu iki çizgi sırasıyla x ve y eksenlerinin sınırlarını belirler. X ekseni için, ilk argüman l en soldaki değeri ve ikinci argüman r en sağdaki değeri ayarlar. Y ekseni için, ilk argüman b en altta yer alan değeri ve ikinci argüman t en üstte yer alan değeri ayarlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.