terça-feira, 19 de maio de 2020

Visualizando o conteúdo de uma matriz 2D

Visualizando o conteúdo de uma matriz 2D

Introdução

Até o momento, criamos gráficos que representam dados unidimensionais. Com esses dados fomos capazes de traçar algumas primitivas. Quando desenhamos mapas é possível visualizar a influência que dois dados tem sobre um terceiro. Imagine que você tem algumas fazendas espelhadas pelo país. Com uma rápida olhada num mapa seria possível saber qual produto cada região do país produz, de acordo com os dados de produção de suas fazendas. A biblioteca matplotlib nos fornece uma API simples para a criação mapas.

Visualizando uma matriz 2D

Nesse exemplo vamos começar com um projeto bem simples. Tudo o que queremos é visualizar o conteúdo de uma matriz 2D. E a matriz que vamos utilizar é o conjunto de Mandelbrot. O conjunto de Mandelbrot é um fractal definido como o conjunto de pontos x no plano complexo para o qual a sequência é definida recursivamente: não tende ao infinito. Para cada ponto x do plano complexo, a sequência se expande indefinidamente.

Como visualizar o conjunto de Mandelbrot

Para visualizar uma matriz 2D, primeiro precisamos criar uma matriz 2d com os valores do mandelbrot e depois precisamos chamar o método imshow passando a matriz para o método. Veja um exemplo abaixo:

Exemplo
import numpy as np
import matplotlib.cm as cm
from matplotlib import pyplot as plt

def iter_count(C, i_max):
  X = C
  for n in range(i_max):
    if abs(X) > 2.:
      return n
    X = X ** 2 + C
  return i_max

N = 512
i_max = 64
x_min, x_max, y_min, y_max = -2.2, .8, -1.5, 1.5

X = np.linspace(x_min, x_max, N)
Y = np.linspace(y_min, y_max, N)
mandelbrot = np.empty((N, N))

for i, y in enumerate(Y):
  for j, x in enumerate(X):
    mandelbrot[i, j] = iter_count(complex(x, y), i_max)

plt.imshow(mandelbrot, cmap = cm.viridis)
plt.show()

Por ser um exemplo que precisa de muito processamento, esse exemplo pode demorar um pouco para mostrar o seu resultado. Mas o resultado vai ser um fractal de Mandelbrot, igual a este:

Como funciona a função imshow

O funcionamento do método imshow é muito simples. O método recebe uma matriz 2d e para cada elemento dessa matriz o método cria um pixel. A cor do pixel é escolhida entre os valores de um mapa de imagens (no nosso caso usamos o viridis). Apesar do métod imshow criar a imagem ela não a mostra, por isso precisamos chamar o método show.

0 comentários:

Postar um comentário