Как сделать неквадратный контурный участок - PullRequest
2 голосов
/ 24 марта 2011

Я использую контур в pyplot, чтобы построить некоторые скалярные данные, но когда мой домен не квадратный, я чувствую, что данные искажены, потому что он всегда отображает их в квадрате (хотя значения оси будут увеличиваться быстрее с одной стороны.) Как сделать так, чтобы масштабирование оси было равным, чтобы, если мой домен в два раза длиннее в направлении x, изображение фактически отображалось в прямоугольнике с этим свойством?

Я что-то делаюкак это:

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
contour = ax.contourf(X,Y,Z)
fig.colorbar(contour)
fig.canvas.draw()

Ответы [ 3 ]

5 голосов
/ 24 марта 2011

Использование ax.set_aspect:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)
x=np.r_[-10:10:100j]
y=np.r_[-20:20:100j]
z= np.add.outer(x*x, y*y)
contour=ax.contour(x,y,z)
fig.colorbar(contour)
ax.set_aspect('equal')
# ax.axis('equal')
plt.show()

выходы

enter image description here

при изменении ax.set_aspect('equal') на

ax.axis('equal')

выходы

enter image description here

4 голосов
/ 24 марта 2011

Это может помочь :

ax = fig.add_subplot(111, aspect="equal")
0 голосов
/ 24 марта 2011

Вам необходимо изменить настройку оси:

axis('equal')

См. Все настройки оси здесь:

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axis

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...