Capítulo 03.
Visualização de dados

Gráfico em Linha

Visualização das tabelas de dados do IDL. Uma maneira de visualizar a seqüência de valores dos dados, como uma linha do tempo, para exibi-los como gráfico em linha existe tanto o  procedimento PLOT, como também a função PLOT; muitos dos comandos para visualização de dados existe em forma de procedimento e como função. O uso como procedimento existe desde sempre no IDL e pode ser encontrado ainda em muitos programas desenvolvidos à mais de 10 ou 15 anos, mas a versão de função é bem mais versátil e moderno.
Neste exemplo, nós iremos ler dados para uma nova variável chirp e exibi-los na tela como gráfico em linha.

IDL> filename = filepath('chirp.dat', subdir=['examples','data'])
IDL> chirp = read_binary(filename)
IDL> help, chirp
         CHIRP BYTE = Array [512]

O valor dos dados foram lidos para um arquivo no IDL na forma de uma matriz de uma dimensão (também conhecido como vetor). Note que a matriz é do tipo byte.
O que há na variável chirp ? Com o procedimento PRINT, nós podemos visualizar os dados em forma de tabela, mas considerando que são 512 valores, pode ser mais fácil de compreender os dados visualizando graficamente. Exiba os dados na tela usando o procedimento PLOT.

IDL> p = plot(chirp)

Através de palavras-chaves a chamada para a função plot pode ser completada com instruções variadas, por exemplo podemos  descrever as descrições dos eixos x e y :

IDL> plot, chirp, xtitle = 'Tempo (s)', ytitle = 'Amplitude (m)', $
IDL> title = 'Onda do seno com freqüência exponencial crescente'

Os ícones na parte de baixo dão acesso direto à uma gama de interações, como por exemplo a gravação do plot em diversos formatos, impressão, inserção de anotações etc. Você poderá encontrar maiores especificações destas e de outras palavras-chave utilizando a ferramenta IDL Online Help.

Gráfico de Superfície

Para exemplo de um gráfico de superfície usaremos o arquivo elevbin.dat  que representa uma modelo digital de elevação, e uma imagem RGB que será drapeada em cima do modelo. A função SURFACE não apenas gera a visualização, como também permite interativamente girar e redimensionar o gráfico.

; leia o arquivo 2D das elevações
IDL> dir = FILEPATH('',SUBDIR=['examples', 'data'])
IDL>z = READ_BINARY(dir+'elevbin.dat', DATA_DIMS=[64,64])
; leia o arquivo RGB para drapear em cima do modelo digital de elevação 
IDL> READ_JPEG, dir+'elev_t.jpg', image
IDL>s = SURFACE(z, TEXTURE_IMAGE=image, YSTYLE=1)    

A variável "s" (poderia ser qualquer outro nome) retornada pela chamada à função surface  permite diversas alterações dos parâmetros do gráfico.

 

Gráfico de Contorno

Mais uma vez como exemplo usarei a variável lvdemdata os dados desta variável podem ser mostrados na tela como um gráfico de contorno do IDL, utilizando o procedimento CONTOUR e as palavras-chave XSTYLE e YSTYLE para ajustar a localização no gráfico de contorno.

IDL> c=contour(z,c_value=indgen(10)*20, /c_label_show)

A keyword "C_LABEL_SHOW" faz com que cada contorno receba uma label com o valor da quota.

 

Exposição e processamento de imagens

IDL pode ser usado para apresentar na tela matrizes como imagens. Os valores dos dados de uma matriz são transformados em uma escala cinza intensa ou colorida.
     Carregue a paleta com escala cinza e apresente a mesma imagem usando o procedimento TVSCL.

IDL> loadct, 0
IDL> tvscl, z

A imagem resultante é realmente pequena. Isto é porque os elementos contidos na matriz lvdemdata são transformados para os pixels da tela do seu computador. A matriz é de 64 elementos em um lado, então a imagem resultante será de 64 pixels. Você pode utilizar o IDL para determinar a resolução da tela do seu computador com a função GET_SCREEN_SIZE:

IDL> print, get_screen_size
         1280.00    1024.00

Redimensione lvdemdata interpolando ele para uma matriz de 256 x 256 elementos usando a função REBIN. Armazene o resultado em uma variável dem. Exiba o resultado na tela.

IDL> x = 256
IDL> y = 256
IDL> dem = rebin (z, x, y)
IDL> tvscl, dem

Perceba que apesar da imagem estar maior você ainda fica com a janela maior do que a imagem porém podemos ajustar o tamanho da janela:

IDL> window, 0, xsize = x, ysize = y
IDL> tvscl, dem

Os dados usados para exibir esta imagem são apenas números, o IDL pode confundir eles. Tente diferenciar a imagem usando a função SOBEL. A função SOBEL utiliza um destaque no contorno.

IDL> tvscl, sobel(dem)