Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sesin 5
LeonelGutirrez
InstitutodeAstronoma,UNAM
leonel@astrosen.unam.mx
Agostode2009
Lectura de archivos fits
Para leer una imagen FITS, puede usarse un esquema como
el que sigue:
IDL>device,decomposed=1
IDL>cabecera=bytarr(80,3*36)
IDL>datos=fltarr(2048,1489);esteeseltamaniodelaimagen
IDL>fitsim={fits,header:cabecera,data:datos};generounaestructura
IDL>openr,ifile,'n3245rss.fit',/get_lun
IDL>readu,ifile,fitsim;tomalosdatosbinariossinformato
IDL>close,ifile;cierraelarchivo
IDL>help,fitsim.data
IDL>help,fitsim.header
IDL>print,fitsim.header[*,0]
IDL>print,string(fitsim.header[*,0])
IDL>bb=fitsim.data
IDL>tvscl,alog10(frebin(bbmin(bb)+1,600,600,/total))
Lectura de archivos fits
Podemos sacar informacin adicional:
IDL>sx=string(fitsim.header[*,3])
IDL>sy=string(fitsim.header[*,4])
IDL>kx=strsplit(sx,/extr)
IDL>ky=strsplit(sy,/extr)
IDL>xx=kx[2]
IDL>yy=ky[2]
IDL>print,'Laimagenesde',xx,'x',yy,'pixeles'
IDL>bb=swap_endian(bb)
;enlaspc'sesnecesariohacerestoparaacomodarlosbytes
;enelordencorrecto.Esdecir,hayquepasarlode'bigendian'
;a'littleendian.
IDL>window,1,xsi=600,ysi=600
IDL>tvscl,alog10(frebin(bbmin(bb)+1,600,600,/total))
(Verelscriptenlee_imagen.proy
unavarianteenelprogramalee_dificil_ngc3245.pro)
Lectura de archivos fits
Tambin puede hacerse de manera fcil:
IDL>a=readfits("n3245rss.fit")
IDL>h=headfits("n3245rss.fit")
IDL>device,decomposed=1
IDL>window,1,xsi=600,ysi=600
IDL>tvscl,alog10(frebin(amin(a)+1,600,600,/total))
IDL>print,h[0]
;loquesigueesextra
IDL>a[0,0]=10
IDL>window,2,xsi=600,ysi=600
IDL>tvscl,alog10(frebin(amin(a)+1,600,600,/total))
IDL>aa=a[300:800,900:*]
IDL>help,aa
AAFLOAT=Array[501,589]
IDL>aa=a[300:800,988:*]
IDL>help,aa
AAFLOAT=Array[501,501]
IDL>window,3,xsi=600,ysi=600
IDL>tvscl,alog10(frebin(aamin(aa)+1,600,600,/total))
Lectura de archivos fits
;Graficaunrengln
IDL>window,3,xsi=600,ysi=600
IDL>plot,a[300:800,1155]
IDL>;calculalasumaendireccionverticaldeunafranja
IDL>ren=total(a[300:800,1000:1199],2)/200
IDL>;dividopor200paratenerelpromedio
IDL>help,ren
RENFLOAT=Array[501]
IDL>plot,ren
(Verelscriptenlee_facil_ngc3245.pro)
Grficas
Las rutinas por excelencia para hacer grficas son plot( ) y oplot( ).
Para graficar un conjunto de datos con sus ejes
plot, x, [y] ;
Para superponer una grfica sobre un sistema de ejes existente
oplot, x, [y]
Generalmente, IDL porporciona valores por defecto 'razonables'.
IDL> plot,sin(findgen(101)/100.*2.*!pi)
Grficas
Las rutinas por excelencia para hacer grficas son plot( ) y oplot( ).
Para graficar un conjunto de datos con sus ejes
plot, x, [y] ;
Para superponer una grfica sobre un sistema de ejes existente
oplot, x, [y]
Generalmente, IDL porporciona valores por defecto 'razonables'.
IDL> plot,sin(findgen(101)/100.*2.*!pi)
Grficas
- Si uno o ambos de los ejes son logartmicos, pueden usarse los
keywords xlog o ylog.
- Tambin pueden usarse los comandos plot_io, plot_oi o plot_oo.
IDL> plot_io,1.1+sin(findgen(101)/100.*2.*!pi)
IDL> plot_oi,sin(findgen(101)/100.*2.*!pi), xrange=[1,100]
IDL> plot_oo,1.1+sin(findgen(101)/100.*2.*!pi), xrange=[1,100]
Grficas
- Si uno o ambos de los ejes son logartmicos, pueden usarse los
keywords xlog o ylog.
- Tambin pueden usarse los comandos plot_io, plot_oi o plot_oo.
IDL> plot_io,1.1+sin(findgen(101)/100.*2.*!pi)
IDL> plot_oi,sin(findgen(101)/100.*2.*!pi), xrange=[1,100]
IDL> plot_oo,1.1+sin(findgen(101)/100.*2.*!pi), xrange=[1,100]
Grficas
- Los parmetros por default pueden modificarse con los keywords.
Algunos de los ms usados son los siguientes:
[x,y,z]range especifica los lmites de los ejes
[x,y,z]style estilo del eje
[x,y,z]title ttulo del eje
[x,y,z]ticks ticks en el eje
title ttulo de la grafica
position posicin de la grfica en la ventana
psym smbolos para los puntos de los datos
Grficas
IDL>x=findgen(51)/50.*2.*!pi
IDL>y=sin(x)
IDL>plot,x,y,psym=1,thick=0,xrange=[0,6.3],xstyle=1,$
IDL>xtitle='fase',title='Graficadeunasenoide'
IDL>x=findgen(101)/100.*2.*!pi
IDL>sx=sin(x)
IDL>cx=cos(x)
IDL>plot,sx,position=[.1,.6,.9,.9]
IDL>plot,cx,position=[.1,.1,.9,.4],/noerase
endfor
end
Grficas
fori=1,n_elements(fase)2dobegin
oplot,x,sin(x+fase[i]),psym=i+1,color=i
texto=strtrim(string(i+1),2)+'!eo!nconjunto'
;Agregaeltexto
mylegend,xpos,ypos0.05*i,$
texto,$
psym=i+1,$
charsize=charsize
endfor
end
Grficas
prograf_ejemplo_1
x=hacevector(xlo=0.0,xhi=1.0,npts=100)
plot,x,beselj(10.0*x,0),psym=0,thick=2.0,$
xtitle='x',ytitle='j!dn!n(10x);n=0,1,2,3',$
title='FuncionesCilindricasdeBessel',$
yrange=[0.5,2.0],/ystyle
;Superponelasgraficas
oplot,x,beselj(10.0*x,1),linestyle=1,thick=2.0
oplot,x,beselj(10.0*x,2),linestyle=2,thick=2.0
oplot,x,beselj(10.0*x,3),linestyle=3,thick=2.0
pos=[0.5,0.5,0.9,0.9]
;r=randomn(s,100)
plot,x,beselj(10.0*x,0),psym=0,/noerase,position=pos,$
xrange=[0.5,0.75],/xstyle,thick=4.0,$
xtitle='x',ytitle='j!d0!n(10x)'
end
Grficas
prograf_ejemplo_1
x=hacevector(xlo=0.0,xhi=1.0,npts=100)
plot,x,beselj(10.0*x,0),psym=0,thick=2.0,$
xtitle='x',ytitle='j!dn!n(10x);n=0,1,2,3',$
title='FuncionesCilindricasdeBessel',$
yrange=[0.5,2.0],/ystyle
;Superponelasgraficas
oplot,x,beselj(10.0*x,1),linestyle=1,thick=2.0
oplot,x,beselj(10.0*x,2),linestyle=2,thick=2.0
oplot,x,beselj(10.0*x,3),linestyle=3,thick=2.0
pos=[0.5,0.5,0.9,0.9]
;r=randomn(s,100)
plot,x,beselj(10.0*x,0),psym=0,/noerase,position=pos,$
xrange=[0.5,0.75],/xstyle,thick=4.0,$
xtitle='x',ytitle='j!d0!n(10x)'
end
Grficas
prograf_ejemplo_2
x=hacevector(xlo=0.0,xhi=3.0*!pi,npts=100)
;Defineelcirculoparaelsimboloencoordenadasnormalizadas
ntheta=20
theta=hacevector(xlo=0.0,xhi=2.0*!pi,npts=ntheta)
xc=cos(theta)&yc=sin(theta)
usersym,xc,yc,/fill
plot,x,sin(x),psym=8,$
xtitle='x',ytitle='y(x)',$
title='Senoideconelnuevosimbolo'
wait,3
usersym,xc,yc
oplot,x,sin(x),psym=8,color=4
end
Grficas
prograf_ejemplo_2
x=hacevector(xlo=0.0,xhi=3.0*!pi,npts=100)
;Defineelcirculoparaelsimboloencoordenadasnormalizadas
ntheta=20
theta=hacevector(xlo=0.0,xhi=2.0*!pi,npts=ntheta)
xc=cos(theta)&yc=sin(theta)
usersym,xc,yc,/fill
plot,x,sin(x),psym=8,$
xtitle='x',ytitle='y(x)',$
title='Senoideconelnuevosimbolo'
wait,3
usersym,xc,yc
oplot,x,sin(x),psym=8,color=4
end
Grficas
prograf_ejemplo_3
x=hacevector(xlo=0.0,xhi=3.0*!pi,npts=100)
fase=hacevector(xlo=0.0,xhi=1.0*!pi,npts=8)
!p.multi=[0,2,2]
fori=0,3do$
plot,x,sin(x+fase[i]),psym=i+4,$
xtitle='x',ytitle='y(x)',$
title='Senoidesdesplazadas',$
xrange=[min(x),max(x)],/xstyle
!p.multi=0
end
Grficas
prograf_ejemplo_3
x=hacevector(xlo=0.0,xhi=3.0*!pi,npts=100)
fase=hacevector(xlo=0.0,xhi=1.0*!pi,npts=8)
!p.multi=[0,2,2]
fori=0,3do$
plot,x,sin(x+fase[i]),psym=i+4,$
xtitle='x',ytitle='y(x)',$
title='Senoidesdesplazadas',$
xrange=[min(x),max(x)],/xstyle
!p.multi=0
end
Graficando datos
bidimensionales
Contornos
IDL>loadct,4;estaesotratabladecolores
IDL>window,1,xsi=500,ysi=500
IDL>device,decomposed=0
IDL>tvscl,darr,!p.region(0),!p.region(1),/norm;lodespliega
IDL>contour,arr,/noerase;superponeloscontornos
Graficando datos
bidimensionales
Ejemplo: (Vertest_contornos.pro)
IDL>window,xsi=500,ysi=500
IDL>arr=exp(smooth(dist(20),3)/3.);losdatos
IDL>!p.position=[.1,.1,.9,.9];Definealareadegraficacin
IDL>!p.region=!p.position
IDL>devreg=convert_coord([.1,.9],[.1,.9],/norm,/to_dev)
;convierteacoordenadasdedispositivo
IDL>darr=frebin(arr,devreg(0,1)devreg(0,0),$
IDL>devreg(1,1)devreg(1,0),/total)
;redimensionaelarreglo
IDL>device,decomposed=1
IDL>tvscl,darr,!p.region(0),!p.region(1),/norm
;lodespliega
IDL>contour,arr,/noerase;superponeloscontornos
IDL>loadct,4;estaesotratabladecolores
IDL>window,1,xsi=500,ysi=500
IDL>device,decomposed=0
IDL>tvscl,darr,!p.region(0),!p.region(1),/norm;lodespliega
IDL>contour,arr,/noerase;superponeloscontornos
Graficando datos
bidimensionales
Ejemplo: (Vertest_contornos.pro)
IDL>window,xsi=500,ysi=500
IDL>arr=exp(smooth(dist(20),3)/3.);losdatos
IDL>!p.position=[.1,.1,.9,.9];Definealareadegraficacin
IDL>!p.region=!p.position
IDL>devreg=convert_coord([.1,.9],[.1,.9],/norm,/to_dev)
;convierteacoordenadasdedispositivo
IDL>darr=frebin(arr,devreg(0,1)devreg(0,0),$
IDL>devreg(1,1)devreg(1,0),/total)
;redimensionaelarreglo
IDL>device,decomposed=1
IDL>tvscl,darr,!p.region(0),!p.region(1),/norm
;lodespliega
IDL>contour,arr,/noerase;superponeloscontornos
IDL>loadct,4;estaesotratabladecolores
IDL>window,1,xsi=500,ysi=500
IDL>device,decomposed=0
IDL>tvscl,darr,!p.region(0),!p.region(1),/norm;lodespliega
IDL>contour,arr,/noerase;superponeloscontornos
Un vistazo a dist()
Sintaxis:
A = DIST(N [, M])
Crea un arreglo en el que el valor de cada elemento del arreglo es
Proporcional a su frecuencia (~ la distancia a la esquina ms cercana).
N es el nmero de columnas en el arreglo resultante.
M es el nmero de renglones en el arreglo. Si M se omite, el arreglo
es cuadrado.
Ejemplo 1:
IDL> device, decomposed=1
IDL> tvscl, exp(rebin(a,500,500))
Un vistazo a dist()
Sintaxis:
A = DIST(N [, M])
Crea un arreglo en el que el valor de cada elemento del arreglo es
Proporcional a su frecuencia (~ la distancia a la esquina ms cercana).
N es el nmero de columnas en el arreglo resultante.
M es el nmero de renglones en el arreglo. Si M se omite, el arreglo
es cuadrado.
Ejemplo 1:
IDL> device, decomposed=1
IDL> tvscl, exp(rebin(a,500,500))
Un vistazo a dist()
Sintaxis:
A = DIST(N [, M])
Crea un arreglo en el que el valor de cada elemento del arreglo es
Proporcional a su frecuencia (~ la distancia a la esquina ms cercana).
N es el nmero de columnas en el arreglo resultante.
M es el nmero de renglones en el arreglo. Si M se omite, el arreglo
es cuadrado.
Ejemplo 1:
IDL> device, decomposed=1
IDL> tvscl, exp(rebin(a,500,500))
Ejemplo 2:
IDL> device, decomposed=0
IDL> tvscl, exp(rebin(a,500,500))
Un vistazo a dist()
Sintaxis:
A = DIST(N [, M])
Crea un arreglo en el que el valor de cada elemento del arreglo es
Proporcional a su frecuencia (~ la distancia a la esquina ms cercana).
N es el nmero de columnas en el arreglo resultante.
M es el nmero de renglones en el arreglo. Si M se omite, el arreglo
es cuadrado.
Ejemplo 1:
IDL> device, decomposed=1
IDL> tvscl, exp(rebin(a,500,500))
Ejemplo 2:
IDL> device, decomposed=0
IDL> tvscl, exp(rebin(a,500,500))
Graficando datos
bidimensionales
Superficies
- Las grficas de superficies definen un sistema de ejes en 3
dimensiones.
- Las rutinas
surface, arr, <x, y>
shade_surf, arr, [x, y>
funcionan de la misma manera como contour, dibujando la
superficie: con una malla la primera y con sombreados la segunda.
Por ejemplo:
Graficando datos
bidimensionales
protest_surface (Vertest_surface.pro)
window,1,xsi=550,ysi=550
arr=exp(smooth(dist(20),3)/3.);losdatos
loadct,3;unatabladecolorconrojos
shade_surf,arr,/save;graficalasuperficiesombreada
;ysalvalamatriz
surface,arr,/noerase;superponelamalla
contour,arr,/t3d,zvalue=15,$
;poneloscontornosarribadelejez
levels=findgen(max(arr)/10.)*10.,/noerase
contour,arr,/t3d,zvalue=0,/noerase
;tambienponeloscontornosenelplanoxy
xyouts,5,3,'Misdatos',/t3d,$;leponetambienuntexto
text_axes=0,charsize=5
xyouts,10,33,'estoenelejez',/t3d,$;yotrotexto
text_axes=5,charsize=5
end
Graficando datos
bidimensionales
protest_surface (Vertest_surface.pro)
window,1,xsi=550,ysi=550
arr=exp(smooth(dist(20),3)/3.);losdatos
loadct,3;unatabladecolorconrojos
shade_surf,arr,/save;graficalasuperficiesombreada
;ysalvalamatriz
surface,arr,/noerase;superponelamalla
contour,arr,/t3d,zvalue=15,$
;poneloscontornosarribadelejez
levels=findgen(max(arr)/10.)*10.,/noerase
contour,arr,/t3d,zvalue=0,/noerase
;tambienponeloscontornosenelplanoxy
xyouts,5,3,'Misdatos',/t3d,$;leponetambienuntexto
text_axes=0,charsize=5
xyouts,10,33,'estoenelejez',/t3d,$;yotrotexto
text_axes=5,charsize=5
end
Enviando los datos a un
archivo Postscript
Xsize=6.0&ysize=6.0&dpi=100&margin=0.1
psfile='varias_graficas3.ps';ArchivoPostscript
set_plot,'ps'
DEVICE,/encapsul,/portrait,FILE=psfile,$
/color,bits=8,/INCHES,XSIZE=xsize,YSIZE=xsize
!P.MULTI=[0,2,2,0,0];4graficasen1
z=dist(50);Creaunarreglo
contour,z,/FOLLOW;Graficaelcontornodez
surface,z;Haceunagraficatridimensional
loadct,0;tabladecoloresmonocromatica
shade_surf,z;graficatrid.enmodosolido
loadct,39;Cargaotratabladecolores
shade_surf,z,SHADES=BYTSCL(z);Repitelagraficaperoencolores
!P.MULTI=0;Regresaalmododeunasolaventana
set_plot,'x';TerminaelmodoPostscript
(Vervarias_graficas3.pro)
Enviando los datos a un
archivo Postscript
Xsize=6.0&ysize=6.0&dpi=100&margin=0.1
psfile='varias_graficas3.ps';ArchivoPostscript
set_plot,'ps'
DEVICE,/encapsul,/portrait,FILE=psfile,$
/color,bits=8,/INCHES,XSIZE=xsize,YSIZE=xsize
!P.MULTI=[0,2,2,0,0];4graficasen1
z=dist(50);Creaunarreglo
contour,z,/FOLLOW;Graficaelcontornodez
surface,z;Haceunagraficatridimensional
loadct,0;tabladecoloresmonocromatica
shade_surf,z;graficatrid.enmodosolido
loadct,39;Cargaotratabladecolores
shade_surf,z,SHADES=BYTSCL(z);Repitelagraficaperoencolores
!P.MULTI=0;Regresaalmododeunasolaventana
set_plot,'x';TerminaelmodoPostscript
(Vervarias_graficas3.pro)
Caracteres especiales en los
textos de las grficas
Comando Significado
!a desplaza arriba de la lnea de divisin
!b desplaza hacia abajo de la lnea de divisin
!c carriage return y new line
!d subndice
!e exponente
!i ndice
!l segundo nivel de subndice
!n regresa al nivel y al tamao normal
!r restablece la posicin
!s salva la posicin
!u superndice
Paracaracteresacentuadosyotros,habrquegenerarelcdigo
correspondiente.Porejemplo,paraelcaracter,es
STRING("305B)
(VerlastablasenayudadeIDL:''HersheyVectorFontSamples'')
Caracteres especiales en los
textos de las grficas
Otros fonts (!n)
Font 3, Simplex Roman Font12, Simplex Script
Font 4, Simplex Greek Font 13, Complex Script
Font 5, Duplex Roman Font 14, Gothic Italian
Font 6, Complex Roman Font 15, Gothic German
Font 7, Complex Greek Font 16, B Cyrilic
Font 8, Complex Italic Font 17, Triplex Roman
Font 9, Math and Special Font 18, Triplex Italic
Font 11, Gothic English Font 20, Miscellaneous
Ejemplo:
IDL>test_contornos
IDL>xyouts,.1,.3,size=5,/norm,$
'!9I!5sin!9(!s!3!r!a!s!5x!e2!n!r!b!7u!n!9)'
teclear@test_caracteres.pro
Caracteres especiales en los
textos de las grficas
Otros fonts (!n)
Font 3, Simplex Roman Font12, Simplex Script
Font 4, Simplex Greek Font 13, Complex Script
Font 5, Duplex Roman Font 14, Gothic Italian
Font 6, Complex Roman Font 15, Gothic German
Font 7, Complex Greek Font 16, B Cyrilic
Font 8, Complex Italic Font 17, Triplex Roman
Font 9, Math and Special Font 18, Triplex Italic
Font 11, Gothic English Font 20, Miscellaneous
Ejemplo:
IDL>test_contornos
IDL>xyouts,.1,.3,size=5,/norm,$
'!9I!5sin!9(!s!3!r!a!s!5x!e2!n!r!b!7u!n!9)'
teclear@test_caracteres.pro
Fin de la sesin 5