【问题标题】:Pyplot : add spacing between figure and colorbar [duplicate]Pyplot:在图形和颜色条之间添加间距[重复]
【发布时间】:2019-03-15 09:27:10
【问题描述】:

如何在图像和颜色条之间添加间距,以免轴标签被覆盖?

目前,我有以下几点:

 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()相反的功能?

【问题讨论】:

  • 有一个很好的summary here 可以解决这个问题(只需删除orientation="horizo​​ntal" 参数)

标签: python-3.x matplotlib


【解决方案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)

如果我们传递一个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)

【讨论】:

  • 如何确定填充系数的值?
  • @usernumber 好吧,这取决于你想要多少填充。您可以为您制作的每个地块目测完成,或者您可以选择一些最小的填充,您希望在这些填充处永远不会有任何重叠并坚持下去。
  • @Ralph 在哪个坐标系中测量填充?