Как установить соотношение сторон для графика в Python со Spyder?

Я совершенно новый для Python, я просто переключился с Matlab. В дистрибутиве находится Anaconda 2.1.0, и я использую IDE Spyder, который пришел с ним.

Я пытаюсь сделать график рассеяния с равными отношениями по осям x и y, так что этот код печатает квадратную фигуру с вершинами правильного шестиугольника, построенного внутри.

import numpy import cmath import matplotlib coeff = [1,0,0,0,0,0,-1] x = numpy.roots(coeff) zeroplot = plot(real(x),imag(x), 'ro') plt.gca(aspect='equal') plt.show() 

Но plt.gca(aspect='equal') возвращает пустую фигуру с осями [0,1,0,1] , а plt.show() ничего не возвращает.

Я думаю, что основная проблема заключается в том, что plt.gca(aspect='equal') не просто захватывает текущую ось и устанавливает ее соотношение сторон. Из документации ( help(plt.gca) ) создается новая ось, если текущий не имеет правильного соотношения сторон, поэтому немедленное исправление для этого должно заключаться в замене plt.gca(aspect='equal') с:

 ax = plt.gca() ax.set_aspect('equal') 

Я должен также упомянуть, что у меня было немного проблем с запуском вашего кода, потому что вы используете pylab для автоматической загрузки функций numpy и matplotlib : мне пришлось изменить мою версию:

 import numpy import cmath from matplotlib import pyplot as plt coeff = [1,0,0,0,0,0,-1] x = numpy.roots(coeff) zeroplot = plt.plot(numpy.real(x), numpy.imag(x), 'ro') ax = plt.gca() ax.set_aspect('equal') plt.show() 

Люди, которые уже привыкли к Python, обычно не используют Pylab, по моему опыту. В будущем вам может быть трудно получить помощь в отношении вещей, если люди не понимают, что вы используете Pylab или не знакомы с тем, как это работает. Я бы рекомендовал отключить его и попытаться получить доступ к функциям, которые вам нужны, через их соответствующие модули (например, используя numpy.real вместо real )