Я пытаюсь сделать квадратный сюжет (используя imshow), т.е. соотношение сторон 1: 1, но не могу. Ничего из этого не работает:
import matplotlib.pyplot as plt
ax = fig.add_subplot(111,aspect='equal')
ax = fig.add_subplot(111,aspect=1.0)
ax.set_aspect('equal')
plt.axes().set_aspect('equal')
Кажется, что звонки просто игнорируются (проблема, с которой я часто сталкиваюсь с matplotlib).
python
matplotlib
jtlz2
источник
источник
ax.axis('equal')
случайно не пробовали ? Как все говорили, то, что вы сделали, должно сработать, но,ax.axis
возможно, это еще один способ найти обходной путь.Ответы:
Третий раз очарование. Я предполагаю, что это ошибка, и ответ Жени предполагает, что она исправлена в последней версии. У меня версия 0.99.1.1, и я создал следующее решение:
Это force.png:
Ниже приведены мои неудачные, но, надеюсь, информативные попытки.
Второй ответ:
Мой «оригинальный ответ» ниже - излишний, так как он делает что-то похожее на
axes.set_aspect()
. Я думаю, вы хотите использоватьaxes.set_aspect('auto')
. Я не понимаю, почему это так, но он создает для меня график квадратного изображения, например этот скрипт:Создает график изображения с «равным» соотношением сторон: и один с «автоматическим» соотношением сторон:
Код, приведенный ниже в «исходном ответе», обеспечивает отправную точку для явно контролируемого соотношения сторон, но кажется, что он игнорируется после вызова imshow.
Оригинальный ответ:
Вот пример процедуры, которая настроит параметры подзаголовка так, чтобы вы получили желаемое соотношение сторон:
Это дает такую фигуру:
Я могу представить, если у вас есть несколько подзаголовков на рисунке, вы захотите включить количество подзаголовков y и x в качестве параметров ключевого слова (по умолчанию 1 каждый) в предоставленную процедуру. Затем , используя эти цифры и
hspace
иwspace
ключевые слова, вы можете сделать все подзаговоры иметь правильное соотношение сторон.источник
get_images
это пустой список (как в случае сax.plot([0,1],[0,2])
, вы можете использоватьget_xlim
иget_ylim
Какая у
matplotlib
вас версия? Мне недавно пришлось обновиться1.1.0
, и этоadd_subplot(111,aspect='equal')
работает для меня.источник
matplotlib
версии2.0.2
.jupyter notebook
версия5.0.0
. Спасибо.После многих лет успеха с приведенными выше ответами я обнаружил, что это снова не работает, но я нашел рабочее решение для подзаголовков на
https://jdhao.github.io/2017/06/03/change-aspect-ratio-in-mpl
С полной благодарностью, конечно же, автору выше (который, возможно, лучше разместит здесь сообщение), соответствующие строки:
Ссылка также дает кристально ясное объяснение различных систем координат, используемых matplotlib.
Спасибо за все полученные отличные ответы - особенно за @ Yann, который останется победителем.
источник
ты должен попробовать с фигаспектом. Меня устраивает. Из документов:
Изменить: я не уверен, что вы ищете. Приведенный выше код изменяет холст (размер графика). Если вы хотите изменить размер окна matplotlib на рисунке, используйте:
это дает окно 5x1 (шxв).
источник
Этот ответ основан на ответе Янна. Он установит соотношение сторон для линейных или логарифмических графиков. Я использовал дополнительную информацию из https://stackoverflow.com/a/16290035/2966723, чтобы проверить, являются ли оси логарифмическими.
Очевидно , что вы можете использовать любую версию
log
вы хотите, я использовалscipy
, ноnumpy
иmath
должно быть в порядке.источник