2016-04-08 6 views
5

Gdybym wykreślić okrąg o tym fragmencieW kreowaniu symp, jak mogę uzyskać działkę ze stałym współczynnikiem proporcji?

from sympy import * 
x, y = symbols('x y')   
p1 = plot_implicit(Eq(x**2 +y**2, 1),aspect_ratio=(1.,1.)) 

będę się okno postać jak ten

enter image description here

Teraz proporcje nie jest to, czego się spodziewałem, bo widzę elipsę zamiast koła. Co więcej, jeśli zmienię proporcje okna (przeciągając dolny prawy narożnik okna) otrzymuję również zmianę współczynnika kształtu wykresu ... Poniższy obrazek otrzymuję po przeciągnięciu rogu aby oglądnąć koło:

enter image description here

chciałbym uzyskać wykres jak ten można dostać w Matlab po ustawieniu axis equal patrz http://it.mathworks.com/help/matlab/creating_plots/aspect-ratio-for-2-d-axes.html kiedy wykreślić elipsę

enter image description here

Czego mi brakuje?

Używam Jupyter a wersja serwera notebooków to 4.1.0 i działa na: Python 2.7.11 | Anaconda 2.5.0 (64-bit) | (domyślnie, 6 grudnia 2015, 18:08:32) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

+0

próbowałem na 'window2010' i' python 2.7.x' i ' sympy 1.0', ten sam problem co twój. Zastanawiam się, czy istnieje "błąd" w 'python 2.7' lub' sympy 1.0'. Nie mam 'python 3.x', ale trzeba go wypróbować na tym –

Odpowiedz

2

Nie jestem pewien, czy jest to objęte stabilnym API Sympy, ale możesz wyodrębnić postać i oś instancji matplotlib i standard użytkowania matplotlib rozmowy, aby zmienić wygląd swojej działki:

import matplotlib.pyplot as plt 
import sympy as sy 

x, y = sy.symbols('x y') 
p1 = sy.plot_implicit(sy.Eq(x**2 +y**2, 4)) 
fg, ax = p1._backend.fig, p1._backend.ax # get matplotib's figure and ax 

# Use matplotlib to change appearance: 
ax.axis('tight') # list of float or {‘on’, ‘off’, ‘equal’, ‘tight’, ‘scaled’, ‘normal’, ‘auto’, ‘image’, ‘square’} 
ax.set_aspect("equal") # 'auto', 'equal' or a positive integer is allowed 
ax.grid(True) 
fg.canvas.draw() 


plt.show() # enter matplotlib's event loop (not needed in Jupyter) 

To daje: Tight Axis with equal aspect ratio

+0

Czy mógłbyś napisać wersję swojego środowiska Python? Przetestowałem twój kod i otrzymałem działkę inną niż ta, którą załączyłeś. Dziękuję Ci. –

+0

@AlessandroJacopson Używam Debian/Sid z matplotlib 1.5, ipython 2.4, Sympy 0.7.6.1 i python 2.7/3.5. Poprawiłem go i uzyskałem pożądane rezultaty, gdy używam pylab ('% pylab' w powłoce ipython lub --pylab jako parametru), ale nie wtedy, gdy go nie używam. Nie mam pojęcia o możliwych przyczynach. – Dietrich

+0

w Sympy 1.0 to nie działa ... funkcja show() w plot.py wywołanie self.plt.show() zamiast self.fig.show(). Jak szybko obejść/test zastępując ppt do fig, należy podać oczekiwany wynik. – kimstik

Powiązane problemy