我简单地绘制了一个拟合文件,并在右侧绘制了一个色条。我无法调节图像和颜色栏的大小,我希望它们的大小相同。
此外,我想知道如何更改颜色条的标签,例如通常在简单图上使用的ax0.set_xticks()
和ax0.set_xticklabels()
。
这是代码:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from astropy.io import fits
import copy
from astropy.wcs import WCS
from astropy.utils.data import get_pkg_data_filename
from matplotlib.colors import LogNorm, Normalize
from regions import read_ds9
fits_file = "fb.fits"
hdul = fits.open(fits_file)
image_data = hdul[0].data
wcs = WCS(hdul[0].header)
hdul.close()
fig = plt.figure(figsize=(8,8))
ax0=fig.add_subplot(111, projection=wcs)
norm = LogNorm(10,1)
my_cmap = copy.copy(matplotlib.cm.get_cmap('Blues_r'))
my_cmap.set_bad((0,0,0))
im = ax0.imshow(image_data, cmap=my_cmap, norm=norm)
bar = fig.colorbar(im)
reg_file = "astropy.reg"
regs = read_ds9(reg_file, errors='warn')
for i, reg in enumerate(regs):
reg.plot(ax=ax0)
ax0.set_title('')
ax0.set_xlabel('RA')
ax0.set_ylabel('DEC')
fig.tight_layout(rect=[0.08, 0.08, 0.94, 0.9])
plt.show()
答案 0 :(得分:0)
您可以将shrink
用作颜色栏的参数。
来自the docs:
收缩分数,用于乘以颜色条的大小
看看链接,其他选项也是可能的,例如设置填充或宽高比。
类似的方法可能对您有用:
bar = fig.colorbar(im, shrink=0.8)
您可以在色条所在的轴上set_yticklabels
(通过bar.ax
获得它)。如果您想自己指定刻度标签,请不要忘记第一个指定刻度位置。
类似这样:
# `myticklocs` are the locations and `mylabels` are your labels
bar = fig.colormap(im, ticks=myticklocs)
bar.ax.set_yticklabels(mylabels, weight='bold', size=9)
看看最小的official labelling demo。