Criando gráficos no GNU Octave

Cover Criar Gráficos no GNU Octave MATLAB

Em muitos trabalhos ou apresentações que fazemos ao longo da nossa vida estudantil e profissional, se faz necessário criar ou apresentar gráficos. Os gráficos são recursos visuais que facilitam a interpretação e análise de dados coletados. Através de uma ferramenta computacional, tal como o Octave, é possível criar gráficos de maneira simples e personalizada. Assim, neste tutorial, veremos como criar gráficos no GNU Octave. Utilizaremos diversos recursos de estilização de linhas, marcadores, texto, título, label (rótulo), legenda, grade e muito mais.


Ainda não tem o Octave instalado ou não está familiarizado com a ferramenta?
Leia o artigo Introdução ao GNU Octave.


Como criar gráficos no GNU Octave

Neste tutorial, vamos utilizar os principais recursos de personalização de gráficos disponíveis no Octave. Realizaremos os seguintes procedimentos:

  1. Declarar vetores;
  2. Declarar vetores de funções;
  3. Plotar funções de forma personalizada;
  4. Ajustar os eixos do gráfico;
  5. Criar pontos no gráfico;
  6. Incluir textos no gráfico;
  7. Incluir título no gráfico;
  8. Incluir rótulos para os eixos x e y;
  9. Incluir legenda dos gráficos das funções;
  10. Destacar os eixos x e y.

-> Declarar vetores

Vetores são estruturas de dados lineares que pertencem a uma determinada classe ou tipo. Um vetor tem dimensão do tipo 1xN, ou seja, uma linha por N elementos. Criamos vetores no Octave para armazenar valores de uma função ou dados coletados em amostras experimentai, por exemplo. Podemos declarar um vetor no Octave de duas formas diferentes. A primeira abordagem informa os valores extremos e um incremento para os elementos intermediários, tal como é mostrado a seguir:

Nota-se que com o incremento de 1.2 não é possível atingir exatamente o extremo superior (valor 10). Então, o último elemento do vetor acaba sendo 9.60000. Para que possamos incluir ambos os extremos no vetor e espaçar igualmente os elementos intermediários, podemos utilizar a função linspace():

A função linspace() calcula o valor correto para espaçar igualmente os elementos de um vetor, incluindo seus extremos. No exemplo acima, escolheu-se 17 elementos. Note que os valores extremos estão presentes e que o vetor resultante tem dimensão 1×17.

-> Declarar vetores de funções

Para construir o gráfico de uma função, vamos criar um vetor que armazena os valores dessa função em um determinado intervalo. Quando criamos um gráfico no Octave, na verdade, estamos plotando vários pontos pertencentes a uma função e interligando-os através de linhas. Isso nos dá a impressão de que estamos visualizando um gráfico contínuo. É possível também plotar o gráfico utilizando somente os pontos, sem linhas.

Para isso, vamos redefinir o vetor x para que ele contenha 100 elementos. Depois, vamos criar vetores de funções calculados com base nos valores do vetor x.

Redefinimos o vetor x para valores no intervalo de -2π a 2π e com 100 pontos, incluindo os extremos. Depois, criamos mais outros 4 vetores com valores das funções y(x) = sin(x), h(x) = cos(x), z(x) = exp(x) e uma parábola g(x) = 0.2*x² – 1.

Note na declaração da parábola que há um ponto antes do segundo sinal de multiplicação. Esse ponto está correto e define uma multiplicação entre vetores. Isso significa que os vetores serão multiplicados entre si ponto a ponto ou elemento a elemento.

-> Opções de personalização dos gráficos

As opções de personalização para linhas e marcadores que podemos utilizar no GNU Octave são as seguintes:

Estilo da linha:

  • ‘-‘ linha sólida (padrão);
  • ‘–‘ linha tracejada;
  • ‘:’ linha pontilhada;
  • ‘-.’ linha tracejada e pontilhada.

Marcador:

  • ‘+’ mira;
  • ‘o’ círculo sem preenchimento;
  • ‘*’ asterisco;
  • ‘.’ ponto;
  • ‘x’ cruzado (letra x);
  • ‘s’ quadrado;
  • ‘d’ diamante (losango);
  • ‘^’ triângulo voltado para cima;
  • ‘v’ triângulo voltado para baixo;
  • ‘>’ triângulo voltado para a direita;
  • ‘<‘ triângulo voltado para a esquerda;
  • ‘p’ pentagrama (estrela de cinco pontas);
  • ‘h’ hexagrama (estrela de seis pontas).

Cor:

  • ‘k’ preto;
  • ‘r’ vermelho;
  • ‘g’ verde;
  • ‘b’ azul;
  • ‘m’ magenta;
  • ‘c’ ciano;
  • ‘y’ amarelo;
  • ‘w’ branco.

Para vídeos e tutoriais, acesse meu canal no YouTube: Engenheiro Jair Junior


-> Plotar gráficos com linhas e marcadores personalizados

Tendo todos os vetores já definidos, vamos agora plotar todo esse conjunto de pontos de maneira personalizada. A personalização dos gráficos é feita utilizando as diretivas mostradas anteriormente para modificar as propriedades dos elementos gráficos (linhas e marcadores).

A seguir, cada função é plotada separadamente, mas isso também pode ser feito através de uma única linha de comando ou também utilizando matrizes. Após plotar a primeira função, o comando hold on é utilizado para que os gráficos se mantenham na janela. Caso contrário, a cada novo comando plot() executado, o gráfico anterior será substituído.

Algumas propriedades de linhas e marcadores foram modificadas nos comandos acima. Deve-se saber que a modificação dessas propriedades sempre é feita aos pares; ou seja, a propriedade é indicada e, logo em seguida, informa-se o valor que será atribuído a ela. Por exemplo, no primeiro comando, modificou-se o tipo do marcador, a cor de preenchimento do marcador e o seu tamanho. A propriedade marker informa o tipo do marcador; foi escolhido um círculo sem preenchimento. A propriedade markerfacecolor atribui uma cor de preenchimento ao marcador; foi escolhida a cor vermelha. E a propriedade markersize informa o o tamanho do marcador; escolheu-se o tamanho 3. Outro parâmetro que também pode ser alterado é o markeredgecolor, que modifica a cor da borda do marcador.

No terceiro comando, alterou-se a propriedade linewidth, que indica a espessura da linha do gráfico. Caso seja atribuída uma espessura maior que 1 neste caso, a linha tracejada do gráfico não será muito bem visualizada.

Veja na figura 1 que o resultado não será nada satisfatório:

Gráfico sem ajuste - Gráficos com GNU Octave
Figura 1 – Gráfico sem a grade de referência e sem ajuste nos eixos (resultado indesejado).

Isso acontece porque há uma diferença muito grande do range das funções no eixo y. Enquanto as funções seno e cosseno variam apenas entre -1 e 1, a função exponencial atinge valores acima de 500. A seguir, vamos corrigir esse problema.

-> Habilitar a grade e ajustar os eixos

Para corrigir a forma como o gráfico é mostrado na janela, vamos restringir o intervalo para os eixos x e y utilizando o comando axis():

O comando axis() altera o intervalo dos eixos x e que é mostrado na figura. Agora, o eixo x é mostrado de -2π a 2π e o eixo y é mostrado de -1.5 a 1.5. E para facilitar a visualização do gráfico, foi habilitada a grade. É possível também habilitar uma grade mais detalhada com o comando grid minor on. O resultado dos comandos anteriores é mostrado na figura 2.

Gráfico com grade e ajustes - Gráficos com GNU Octave
Figura 2 – Gráfico com a grade habilitada e eixos ajustados para uma melhor visualização das funções.

Agora, como exercício adicional, modifique os parâmetros de cor e estilo das linhas e dos marcadores para ver o resultado. Escolha o que mais lhe agradar.

-> Marcar um ponto e adicionar texto ao gráfico

Se quisermos marcar um ponto de interesse no gráfico, podemos fazê-lo utilizando o comando plot() com as coordenadas do ponto. Também é possível adicionar um texto descritivo a esse ponto ou a qualquer outro local do gráfico. Veja os comandos a seguir:

O resultado será conforme mostra a figura 3:

Gráfico com ponto e texto - Gráficos com GNU Octave
Figura 3 – Gráfico com um ponto e texto descritivo.

Note que para adicionar o texto foi adicionado um deslocamento de 0.15 em x e 0.08 em y para que o texto não ficasse sobre o próprio ponto ou alguma das funções do gráfico.

-> Adicionar título ao gráfico e rótulos aos eixos

Devemos dar um nome ao gráfico e também nome aos eixos x e y, informando o que cada um representa. Vamos fazer isso através dos comandos title(), xlabel() e ylabel().

O resultado será conforme mostra a figura 4:

Gráfico com título e rótulo - Gráficos com GNU Octave
Figura 4 – Gráfico com título geral e rótulos nos eixos x e y.

A propriedade fontsize define o tamanho da fonte utilizada e foi ajustada para 18 no título e 15 nos rótulos. Note que caracteres especiais não são aceitos pelo Octave; são simplesmente ignorados na própria janela de comandos.

-> Criar uma legenda para as funções

Agora, vamos adicionar uma legenda ao nosso gráfico para que as pessoas saibam qual cor representa o quê. Para isso, utilizaremos o comando legend().

O resultado é mostrado na figura 5:

Gráfico com eixos destacados - Gráficos com GNU Octave
Figura 5 – Gráfico com os eixos x e y destacados.

Note que o nome das funções deve ser escrito na ordem em que elas foram plotadas anteriormente utilizando o comando plot(). Também foram utilizadas as propriedades location e orientation para posicionar a legenda no canto inferior esquerdo do gráfico e com disposição horizontal. Por padrão, a legenda é criada no canto superior direito com disposição vertical (um item abaixo do outro).

-> Destacar os eixos x e y

Podemos notar que os eixos x e y não ficam destacados na figura. É preciso se orientar pelos números abaixo do gráfico e ao lado esquerdo para saber onde está a origem do sistema. Isso deixa a análise do gráfico prejudicada. Então, para realçar esses dois eixos, vamos utilizar um artifício bem simples. Vamos unir dois pontos situados nos extremos de cada eixo através de uma reta de largura um pouco maior. Esses pontos serão unidos através do comando plot().

O primeiro comando une dois pontos nas coordenadas (-2π, 0) e (2π, 0). O segundo comando une dois pontos nas coordenadas (0, -1.5) e (0, 1.5). O resultado é mostrado na figura 5:

Gráfico com eixos destacados - Gráficos com GNU Octave
Figura 5 – Gráfico com os eixos x e y destacados.

Agora temos um gráfico completo com título, legenda, rótulos nos eixos x e y, gráficos de funções em cores e estilos diferentes, um ponto e um texto para o ponto.

-> Salvar os gráficos como imagens

Por último, vamos salvar o gráfico gerado como uma imagem para que o mesmo possa ser utilizado posteriormente. É possível salvar o gráfico em formato .JPG ou em .PNG.

O primeiro comando salva a imagem em formato .PNG e o segundo comando salva a imagem em formato .JPG. Há também a possibilidade de salvar em formato .PDF através da própria janela do gráfico, indo em Arquivo > Salvar ou Salvar Como.


Vídeo YouTube Criar Gráficos no GNU OctaveAssista o vídeo-tutorial: Como criar gráficos no GNU Octave


Conclusão

Vimos neste tutorial uma maneira fácil e objetiva de criar gráficos no GNU Octave. Através de simples comandos, modificamos diversas propriedades do gráfico, tais como a cor e o estilo da linha, bem como o tipo, a cor e o tamanho dos marcadores. Além disso, adicionamos itens ao gráfico que auxiliam a visualização e interpretação do mesmo (título, rótulos, legenda, etc). Toda essa versatilidade mostra que é fácil criar gráficos com o GNU Octave.

Em um próximo artigo, mostro como criar gráficos em barras utilizando alguns novos recursos de personalização.

Fiquem à vontade para comentar e tirar dúvidas. Será sempre um prazer ajudar!
Abraços e até a próxima!

Sobre

Jair Junior é Bacharel em Engenharia Eletrônica pela Universidade de Brasília [2014] com ênfase em microeletrônica. Suas especialidades na área são microcontroladores, sistemas embarcados e projeto de hardware. Também possui conhecimentos aprofundados em aplicações web e processamento digital de imagens. Atualmente, é aluno de pós-graduação lato sensu da PUC Minas no curso de Desenvolvimento de Aplicações Web. Ademais, tem como hobbies viajar, praticar esportes na natureza, apreciar cervejas artesanais e escutar um bom e velho rock 'n roll. Para mais detalhes, acesso a página sobre o autor.

Ver todos os posts de

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *