Pyplot:在图形和颜色栏之间添加间距

时间:2019-03-15 09:27:10

标签: python-3.x matplotlib

如何在图像和颜色栏之间增加间距,以使轴标签不被覆盖?

目前,我有以下内容:

 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.show()

但是在这里,颜色条与右侧轴重叠。如何使图中的元素适当间隔?

我对subplots_adjust()有所了解,但我宁愿尝试找到每个元素的宽度也不费吹灰之力。是否存在与plt.tight_layout()相反的功能?

1 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标。我认为最简单的方法就是将pad值传递给您对plt.colorbar的调用。

这是MWE,图像和颜色条之间没有填充:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(1, 1)

im = ax.imshow(np.random.rand(10,10))
fig.colorbar(im)

enter image description here

如果我们传递一个pad参数:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(1, 1)

im = ax.imshow(np.random.rand(10,10))
fig.colorbar(im, pad=0.25)

enter image description here