我有一组RGB
图像,我用RGB
制作了aplpy
图像,我还在图像上覆盖了一些轮廓,但我想剪切图像并制作图像小视图我会看到轮廓的峰值。
import aplpy
import atpy
from pyavm import AVM
import asciitable
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm,BoundaryNorm
import montage_wrapper
from astropy.io import fits
import pyfits
from astropy import wcs
fitsfile = 'rgb.fits'
fitsfile_2d = 'rgb_2d.fits'
pngfile = 'rgb_arcsinh_contour.png'
figfile = 'rgb.png'
w = wcs.WCS(naxis=2)
# Set up an "Airy's zenithal" projection
# Vector properties may be set with Python lists, or Numpy arrays
w.wcs.crpix = [5.70000000E+03, 3.05000000E+03]
w.wcs.cdelt = np.array([-6.611111263E-05, 6.611111263E-05])
w.wcs.crval = [23.166667, -7.666667]
w.wcs.ctype = ["RA---TAN", "DEC--TAN"]
w.wcs.cunit =["deg","deg"]
# Print out all of the contents of the WCS object
w.wcs.print_contents()
# Some pixel coordinates of interest.
pixcrd = np.array([[0,0],[24,38],[45,98]], np.float_)
# Convert pixel coordinates to world coordinates
world = w.wcs_pix2world(pixcrd, 1)
print world
# Convert the same coordinates back to pixel coordinates.
pixcrd2 = w.wcs_world2pix(world, 1)
print pixcrd2
# These should be the same as the original pixel coordinates, modulo
# some floating-point error.
assert np.max(np.abs(pixcrd - pixcrd2)) < 1e-6
# Now, write out the WCS object as a FITS header
header = w.to_header()
hdu = pyfits.open(fitsfile)
# header is an astropy.io.fits.Header object. We can use it to create a new
# PrimaryHDU and write it to a file.
hdu = fits.PrimaryHDU(header=header)
# make rgb image
aplpy.make_rgb_image(fitsfile, pngfile,
vmin_r=-0.005, vmax_r=0.2,
vmin_g=-0.02, vmax_g=0.1,
vmin_b=-0.02,vmax_b=0.04,
embed_avm_tags=False)
# make a figure
img = aplpy.FITSFigure(fitsfile_2d)
img.show_rgb(pngfile)
img.set_nan_color('white')
standard_setup(img)
如何从具有给定大小的图像的给定坐标生成子图?
答案 0 :(得分:1)
根据APLpy文档,您可以subplots:
默认情况下,FITSFigure会创建一个带有单个子图的图形 占据了整个人物。但是,APLpy可用于放置 现有matplotlib图形实例中的子图。去做这个, 应使用figure =参数调用FITSFigure,如下所示:
import aplpy import matplotlib.pyplot as mpl fig = mpl.figure() f = aplpy.FITSFigure('some_image.fits', figure=fig)
和recenter你的数字:
可以通过缩放和平移来交互式地探索该图。至 以编程方式重新定位特定区域,使用以下内容 方法,指定半径:
fig.recenter(33.23, 55.33, radius=0.3) # degrees
或单独的宽度和高度:
fig.recenter(33.23, 55.33, width=0.3, height=0.2) # degrees
我测试了它,因为我也使用了APLpy,它对我很有用。
HTH,
德语。