Pyplot: пространство вокруг осей наложения - PullRequest
0 голосов
/ 15 марта 2019

Я хотел бы иметь наложенную сетку с метками оси.Однако, когда я делаю это, метки для наложенной сетки перекрываются с заголовком и цветовой шкалой.

На данный момент у меня есть следующее:

 from astropy.wcs import WCS
 from astropy.io import fits
 from astropy.utils.data import get_pkg_data_filename
 import matplotlib.pyplot as plt

 image_file = get_pkg_data_filename('tutorials/FITS-images/HorseHead.fits')
 hdu = fits.open(image_file)[0]
 wcs = WCS(hdu.header)

 ax = plt.subplot(projection=wcs)
 im = ax.imshow(hdu.data, origin='lower')

 overlay = ax.get_coords_overlay('galactic')
 overlay.grid(color='black', ls='dotted')
 overlay[0].set_axislabel('Galactic Longitude')
 overlay[1].set_axislabel('Galactic Latitude')

 plt.colorbar(im)
 plt.title("Horsehead nebula")
 plt.show()

Но здесь цветовая полоса перекрывается с правой боковой меткой, а заголовок заканчивается под верхней меткой.Как сделать так, чтобы элементы на этом рисунке были правильно расположены?

Есть ли функция, которая бы делала противоположное plt.tight_layout()?


Я бы не стал возитьсявокруг установки значений расстояния вручную.Я хочу, чтобы интервал выполнялся на основе размера различных элементов.

Например, я знаю, что могу сделать fig.colorbar(im, pad=padvalue), но я хочу, чтобы значение для padvalue было найдено автоматически.

1 Ответ

1 голос
/ 15 марта 2019

constrained_layout должен поставить цветную полосу справа от любых детских художников ax1.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, num=100)
y = x ** 2 + 10 * np.random.randn(100)

f, ax1 = plt.subplots(1,1,figsize=(6,4),
        constrained_layout=True)
im1 = ax1.scatter(x, y*1000, c=y, cmap='magma')
ax1.yaxis.tick_right()
f.colorbar(im1, ax=ax1)

enter image description here

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