2013-08-01 26 views
57
SQUARE grafiğinde çizgiler çizmek istiyorum.

Python matplotlib'de x ekseni ve y ekseninin ölçekleri nasıl eşitlenir?

x-axis ve y-axis ölçekleri aynı olmalıdır.

örn. x, 0 ile 10 arasında değişir ve ekranda 10 cm'dir. y ayrıca 0 ila 10 arasında olmalıdır ve ayrıca 10 cm olmalıdır. Pencere boyutuyla dağılsa bile SQUARE şeklinin korunması gerekir.

Şu anda, grafikim pencere boyutu ile birlikte ölçeklendiriliyor.

Bunu nasıl başarabilirim?

GÜNCELLEME:

ben aşağıdakileri denedim ama işe yaramadı.

plt.plot(range(5)) 
plt.xlim(-3, 3) 
plt.ylim(-3, 3) 
plt.gca().set_aspect('equal', adjustable='box') 
plt.draw() 

doc for set_aspect

+0

Benim için çalışıyor. Çalışmayan bir kod örneği gönderir misiniz? Ve neyin çalışmadığını açıklayabilir misin? Sadece samen ölçeğini istiyor musun? Ya da aynı aralıkta? – joris

+0

@joris temelde sabit bir SQUARE grafiği istiyorum. Pencereyi büyütsem bile, SQUARE'in ayrıldığını umuyorum. Ekranım geniştir, pencereyi azamileştirdikten sonra grafik de dikdörtgen olur. Hala olmasını istiyorum SQUARE –

+0

Yine, tam bir kod örneği gönderebilir misin. Çünkü verilen cevap bunu yapmalı, onu kare olarak koru. Genişliğini veya yüksekliğini korumaz, ancak şeklini korur. – joris

cevap

86

:

plt.xlim(-3, 3) 
plt.ylim(-3, 3) 
plt.axis('equal') 
+2

Harika! Aslında çekicilik gibi çalışır. Bana ne diyeceğini söyler misiniz? (Plât (5)) 've' plt.gca() set_aspect ('eşit', ayarlanabilir = 'kutu') ', eğer sakıncası yoksa? Ayrıca, plt.draw() 'i yoksa bile, arsa hala görünecektir. Öyleyse bunun kullanımı nedir? –

+0

"arsa" sadece gösterilecek bir şey var. Set_aspect için dokümantasyon bağlantısını okuyun. 'Draw' sadece işlendiğinden emin olmak içindir. – tacaswell

+0

Üzgünüm ama arsa() içindeki aralığı (5) şey hakkında soruyorum. Menzil (5) ne yapar? –

14

gibi bir şey deneyin ben mi.

+0

çalışmıyor. Üzgünüm –

+0

Bu, sistemimde çalışır, belki üzerinde çalıştığınız kodun bir kısmını gösterebilirdiniz? Sorunu daha çabuk çözmeye yardımcı olabilir. – Dman2

+0

Bu genel olarak çalışmıyor. Eksenler eşittir, ancak çizim penceresi de kare olmadıkça çizim karesi kare değildir. Matplotlib 2.0 ile test edildi – divenex

17
pyplot.axis('scaled') 

eser de için: Bunu yapmak için API derinlerine biraz kazmak gerekiyor

import pylab as p 
p.plot(x,y) 
p.axis('equal') 
p.show() 
+1

Bu cevap yeterince ilgi görmedi! - Açık ve özlü. Ama 3 yıl geç olsa da ... – Clausen

+0

çalıştı! Teşekkür ederim! –

İlgili konular