Introdução ao GnuPlot

Nuno Silva

nunojsg AT gmail DOT com

Copyright (C) Nuno Silva 2005, 2008.

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre do GNU, Versão 1.2 ou qualquer outra versão mais recente publicada pela Fundação para o Software Livre; sem Secções Invariantes, sem Textos da Primeira-Capa e sem Textos da Quarta-Capa. Uma cópia da licença encontra-se disponıvel em <http://njsg.no.sapo.pt/downloads/FDL.TXT>.



Apesar de actualmente nos encontrarmos rodeados de tecnologia, há vários casos em que dificilmente somos apresentados às ferramentas que nos podem ser verdadeiramente úteis.

O gnuplot é um bom exemplo de ferramenta de valor, com capacidade de renderização de gráficos a duas e três dimensões, e fornecendo, no seu leque de funcionalidades, formas de proceder ao tratamento estatıstico de dados.

Este trata-se de um guia (muito) básico, servindo apenas para permitir a uma pessoa começar a explorar e usar o GnuPlot. Tutoriais e manuais mais avançados poderão decerto ser obtidos na internet. A leitores especialmente interessados no uso intensivo de sistemas matemáticos recomenda-se que explorem também o GNU Octave e o Maxima Primer (ambos usam o GnuPlot para renderização, sendo que o último suporta cálculo simbólico).

Instalar o GnuPlot

Nalguns sistemas, pode dar-se o caso de o GnuPlot já se encontrar instalado. Para verificar se o computador tem o GnuPlot instalado, execute o seguinte comando numa linha-de-comandos:

$ gnuplot

Se aparecer um erro de "comando não encontrado", o GnuPlot não se encontra instalado. Se aparecer um rol de linhas, em que a primeira diz "GNUPLOT", o seu computador já tem o GnuPlot.

Caso não o tenha instalado, pode obtê-lo usando o gestor de pacotes do seu sistema (uma ferramenta frequente nos sistemas unix-like), ou no site oficial1.

Desenhar funções

Agora que já tem o GnuPlot instalado, execute-o. Aparece uma linha-de-comandos gnuplot> . É através desta linha-de-comandos que se interage com o GnuPlot. Por exemplo, para desenhar a função $y=x$:

plot x

O resulta num gráfico como o da figura 1 - a cores e com muito mais qualidade do que os gráficos de algumas calculadoras.

Figura 1: Gráfico da função $y=x$.
\includegraphics[width=\columnwidth]{grafico-y-equals-x.eps}

Agora vamos representar duas funções ao mesmo tempo, $y=x$ e $y=x^{2}$.

Antes de o fazermos, é necessário saber como indicar mais do que uma função e como representar potências:

Para desenharmos duas ou mais funções ao mesmo tempo, separamo-las por vırgulas. Por exemplo, para desenhar $y=x$, $y=2x$ e $y=3x$:

plot x, 2*x, 3*x

No GnuPlot, as potências seguem esta fórmula: b**e, em que b é a base e e o expoente.

Agora já podemos desenhar as nossas funções (resultando na figura 2):

plot x, x**2

Figura 2: Gráficos das funções $y=x$ e $y=x^{2}$.
\includegraphics[width=\columnwidth]{graphic2.eps}

Sintaxe

Existe um conjunto de regras que ditam a forma como se escrevem as expressões. Uma delas já foi abordada - a forma como se escrevem as potências.

Outra regra a ter em conta é a obrigatoriedade de indicar todas as multiplicações (usando o operador de multiplicação, o asterisco, *). Ou seja, para se obter o gráfico de $2^x$ é necessário escrever plot 2*x, pois plot 2x não irá funcionar.

A divisão faz-se com uma barra (/), e a soma e a multiplicação fazem-se recorrendo aos sinais do costume (+ e -).

Os números sem ponto decimal (no GnuPlot usam-se pontos em vez de vırgulas, tal como nas calculadoras) são tratados como números inteiros. Isto quer dizer que, por exemplo, escrever 1/2 é o mesmo que escrever 0, pois o resultado de uma operação com números inteiros é um número inteiro. Para se obter 0.5, é nevessário escrever 1/2.0 (ou 1.0/2).

Trigonometria

O GnuPlot reconhece várias funções trigonométricas, como por exemplo o seno (sin), o co-seno (cos) e a tangente (tan).

Para usá-las, escrevemos o nome da função seguido dos argumentos (entre parêntesis). Por exemplo, no caso do seno do ângulo de amplitude $x$, a expressão é: sin(x)

Um dos problemas com que nos deparamos ao representarmos equações com funções trigonométricas é a unidade das amplitudes dos ângulos.

Para configurar o programa para graus, usamos o comando set angles degrees. Para trabalhar em radianos, executamos o comando set angles radians.

Janela do gráfico

Qualquer que seja o equipamento de renderização, por vezes torna-se necessário definir os intervalos de valores que devem ser desenhados no gráfico.

Uma das situações mais comuns é quando os dados se referem a áreas, volumes e comprimentos (variáveis que não podem ter valores negativos). Por exemplo, imaginemos a função $A(x)=x^{2}$, que permite calcular a área de um quadrado de aresta $x$. Começamos por desenhar a função $y=x^{2}$ (figura 3):

plot x**2

Figura 3: Gráfico da função $A(x)=x^{2}$.
\includegraphics[width=\columnwidth]{x-sq-2.eps}

Mas como a área de um polıgono não pode ter valores negativos, torna-se necessário indicar ao GnuPlot para desenhar apenas o lado positivo da função. Para tal, usam-se parâmetros do comando plot.

Antes da lista de funções, é possıvel indicar os intervalos de dados a mostrar, usando a sintaxe

plot [xmin:xmax] [ymin:ymax] funções

em que xmin e ymin são os valores mınimos para $x$ e $y$, respectivamente, e xmax e ymax são os valores máximos. Não é mandatório especificar todos os limites - quando não se deseja definir um, omite-se o valor, daı que o seguinte comando seja válido, resultando no gráfico da figura 4, que já é adequado ao contexto em causa:

plot [0:] [0:] x**2

Figura 4: Gráfico da função $A(x)=x^{2}$.
\includegraphics[width=\columnwidth]{x-sq-2-positive.eps}

Exportar imagens

O GnuPlot desenha os gráficos para uma janela da interface gráfica. Para guardar os gráficos como imagens, é apenas necessário fazer com que ele passe a desenhar os gráficos para um ficheiro. Para tal altera-se o tipo de terminal para o correspondente ao tipo de imagem desejado.

Existem inúmeros tipos de terminal, entre eles o png e o postscript.

Portable Network Graphics (PNG)

Para os casos em que se pretenda uma imagem não-vectorial, o formato PNG é, provavelmente, uma boa opção. Eis como exportar os gráficos para PNG:

Primeiro, selecciona-se o terminal ``png'':

set terminal png

Depois, configura-se o terminal para escrever o resultado num ficheiro PNG (neste caso, para o ficheiro ``grafico.png''):

set output "grafico.png"

E, por fim, redesenha-se o gráfico:

replot

Encapsulated PostScript (EPS)

Quando o desejado é uma imagem vectorial, existem várias escolhas possıveis. Por exemplo, para colocar o gráfico num documento LATEX, devemos exportá-lo no formato EPS.

Para tal, seguimos um procedimento semelhante ao anterior:

set terminal postscript eps color

set output "grafico.eps"

replot

Outros formatos

Para alguns tipos de terminais, existem operações especıficas, que podem ser consultadas com a ajuda do GnuPlot (comando help), no entanto, para alguns é apenas necessário seguir o procedimento usado para o formato png, usando outro nome de terminal e de ficheiro.

Por exemplo, para incluir uma imagem numa página web, poderá optar pelo formato SVG:

set terminal svg

set output "grafico.svg"

replot



Notas de rodapé

... oficial1
http://www.gnuplot.info/download.html