Matplotlib: равное соотношение сторон только для одного субплота - PullRequest
1 голос
/ 13 марта 2019

Я хотел бы построить изображение и следы вдоль двух его осей.Мне нужны общие оси (x для одной трассы и y для другой), без пробелов между графиками, но также равное соотношение сторон для изображения.Я работаю в Python 3.6.

С GridSpec (я также пробовал с подсюжетами), я могу выполнить первую часть:

no_space

Однако, если я наложу равное соотношение сторон на изображение, я получу это

enter image description here

Кажется, я не могу понять, как получить квадратное изображениебез пробелов вокруг ...

Вот соответствующая часть моего кода (у меня также есть версия с использованием участков):

    h, w = plt.figaspect(1)
    fig = plt.figure(figsize = (h, w))
    grid = fig.add_gridspec(nrows = 2, ncols = 2, 
              hspace = 0, wspace = 0, width_ratios = [2, 1], 
              height_ratios = [1, 2])
    ax = fig.add_subplot(grid[1,0])
    ay = fig.add_subplot(grid[0,0], sharex = ax)
    az = fig.add_subplot(grid[1,1], sharey = ax)
    plt.setp(ay.get_xticklabels(), visible = False)
    plt.setp(az.get_yticklabels(), visible = False)

    # Add this for square image
    ax.set_aspect('equal')

Любая помощь?

1 Ответ

0 голосов
/ 13 марта 2019

Может быть, есть какой-то умный способ избежать этой проблемы в целом, но в качестве быстрого решения вы можете просто использовать subplots_adjust:

import matplotlib.pyplot as plt

h, w = plt.figaspect(1)
fig = plt.figure(figsize = (h, w))
grid = fig.add_gridspec(nrows = 2, ncols = 2, 
          hspace = 0, wspace = 0, width_ratios = [2, 1], 
          height_ratios = [1, 2])
ax = fig.add_subplot(grid[1,0])
ay = fig.add_subplot(grid[0,0], sharex = ax)
az = fig.add_subplot(grid[1,1], sharey = ax)
plt.setp(ay.get_xticklabels(), visible = False)
plt.setp(az.get_yticklabels(), visible = False)

# Add this for square image
ax.set_aspect('equal')

# Adjust subplots
plt.subplots_adjust(top=0.9)

Хотя вы захотите немного изменить галочки, это дало мне:

enter image description here

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