Vous êtes sur la page 1sur 9

Claudio M.G. de Sousa. Esse material no pode ser comercializado.

Direitos cedidos Editora Universa, Universidade Catlica de Braslia.

SOFTWARE GRFICO
6.1 - Introduo ao GNUPLOT
GNUPLOT um programa interativo de comandos dirigidos para a gerao de grficos.
Ele se parece um pouco com o DOS no sentido de que temos de digitar os comandos linha a linha.
Alguns comandos podem ser encontrados na Barra de Menus de onde podem ser acionados
utilizando-se o mouse no caso de computadores pessoais; em estaes de trabalho costuma-se
utilizar os comandos linha a linha.
O Gnuplot foi desenvolvido em 1986 inicialmente por Thomas Williams e Colin Kelley no
Dartmouth College, na cidade de Hanover-NH, ao norte dos EEUU (Cf. Willians et al, 1993). Foi
lanado como um free software, e ainda (no ano de 1999) pode ser obtido sem nus atravs da
pgina Internet do Dartmouth College: www.dartmouth.edu. Hoje em dia (2007), esse software
est sendo disponibilizado para download no site: www.gnuplot.info .
No texto que se segue estaremos comentando os comandos referentes verso 4.0,
desenvolvida em 2004. Ao acionar, pois, essa verso do Gnuplot, o cursor aparece piscando em
frente ao prompt sinalizado por " gnuplot > " , aps o qual devem ser digitadas as instrues. P r
simplificao, iremos sempre indicar as instrues utilizadas num procedimento aps o sinal ">".
Nos exemplos que utilizaremos, digite apenas o comando que segue o sinal ">" e tecle enter para
que o comando seja executado.
Duas instrues inicialmente so de interesse:
> help
> exit

acionar o auxlio ("help" ) do programa


sair do programa

Com o Gnuplot podemos produzir grficos que sejam definidos por uma equao ou
grficos a partir de pontos gerados por um programa que deposite valores num arquivo. Os
comandos plot (grficos de duas dimenses) e splot (grficos de trs dimenses) so considerados
comandos primrios . H outros comandos que modificam tamanho, cor, ttulo, etc., que sero
considerados secundrios para a finalidade a que se prope o programa.
Outra facilidade oferecida pelo Gnuplot o comando de repetio de digitaes anteriores.
Basta acionar [] no teclado para evitar a digitao de linhas anteriores. Ao aparecer a digitao
anteriormente utilizada, basta modific-la da maneira mais conveniente e teclar enter.
Analogamente, [] busca o prximo comando aps a linha em uso.

Um outro comando oferecido o replot, que apenas repete a gerao do ltimo grfico
pedido pelo comando plot ou splot. Se modificaes forem introduzidas no formato do grfico, o
replot repetir o ltimo grfico gerado, respeitadas as modificaes introduzidas pelos comandos
secundrios que por ventura tenham sido digitados.
Em resumo:
> replot
[]
[]

repete a gerao do ltimo grfico atualizado


no teclado, repete comando acima
no teclado, repete comando abaixo

6.2 - Grficos em 2D (plot)


Para grficos em duas dimenses, utilizamos o comando plot. Iniciaremos com a gerao
de grficos para funes pr-definidas na biblioteca de comandos do Gnuplot; posteriormente nos
aprofundaremos em outras possibilidades oferecidas por esse comando.
Aps a digitao do comando plot, deve-se seguir um comando que indique o que deve ser
esboado no grfico. Como o comando plot um comando para gerar grficos de duas
dimenses, aps esse comando o programa espera que venhamos a definir uma funo f(x).
como se quisssemos visualizar o grfico de y=f(x), e, para tanto, digitamos:
> plot <f(x)>
no campo onde lemos <f(x)>, devemos colocar a funo que ser a geradora do grfico. O
Gnuplot compreender a varivel x em qualquer funo digitada como sendo a varivel que
corresponde ao eixo horizontal (abcissa), colocar valores adequados para x, e gerar, ponto a
ponto, os valores que sero lanados no eixo vertical (ordenada).
Como exemplo, podemos obter o grfico da funo cosseno digitando:
> plot cos(x)
ou o grfico da funo tangente:
> plot tan(x)
Aps a visualizao de cada grfico, convm fechar a janela do grfico antes de prosseguir
com outros grficos. Outros exemplos so:
> plot cos(2*x)

grfico de cosseno de 2x

> plot sin(x)

grfico de seno de x (note que sin representa seno,


devido a sua origem em lngua inglesa).

> plot sin(2*x) + cos(x)**2


grfico de sen( 2 x ) + cos2 ( x )

Note que, assim como vimos em Linguagem de Programao, temos de introduzir via
teclado as funes atravs de comandos que reflitam o que escrevemos no papel. Como em
algumas linguagens, notamos que dois asteriscos (**) significa exponenciao, e que um asterisco
(*) significa multiplicao. Seguem-se, abaixo, alguns operadores e funes para o Gnuplot:
Operao
*
**
/
+
-

Exemplo
x*y
x**y
x/y
x+y
x-y

Retorno
produto xy
exponenciao x y
diviso x/y
soma x + y
subtrao x - y

Como vimos acima, podemos inserir uma funo como seno ou cosseno e o Gnuplot ir
gerar o grfico automaticamente. Algumas das funes mais utilizadas so:
Funes Trigonomtricas e Hiperblicas
cos(x)
sin(x)
tan(x)

acos(x)cosh(x)
asin(x)
sinh(x)
atan(x)
tanh(x)

Pela ordem, as funes acima correspondem ao cosseno, arco-cosseno, cosseno


hiperblico; seno, arco-seno, seno hiperblico; e tangente, arco-tangente, tangente hiperblica.
Funes como secante, cossecante e cotangente devem ser construdas a partir de cosseno, seno e
tangente.
Funes Logartmicas, Exponenciais e Outras
log(x)
log10(x)
exp(x)
sqrt(x)
abs(x)
rand(x)
sgn(x)

Logaritmo Natural (ln x)


Logaritmo na base 10 (log x)
Exponenciao Natural ( e x )
Raiz Quadrada ( x )
Valor absoluto ( |x| )
Gera nmero aleatrio para x
sinal de x (resulta em 1 se x>0, -1 se x<0, e 0 se x=0)

Na tabela abaixo, seguem-se alguns exemplos de como inserir o comando no Gnuplot, para
gerar o grfico da equao desejada.
Equao
tan( x )
sen
cos( x )
cos(10 x ) + sen 2 ( 3 x )
x 1/ 2 ou x
x 1/ 3
1 sen( x )
x+
x2 + 4

Comando Gnuplot
> plot sin(tan(x)/cos(x))
> plot
> plot
> plot
> plot

cos(10*x)+sin(3*x)**2
sqrt(x) ou plot x**(0.5)
x**(0.333333)
x + sqrt((1-sen(x))/(x**2+4))

Como observa-se nos exemplos 3 e 4 da tabela acima, por algum motivo o Gnuplot falha
em compreender fraes para o expoente, dentre outras operaes. Por tanto, importante
ressaltar que no sejam colocadas operaes a serem calculadas no expoente.
6.3 - Grficos em 3D (splot)
Assim como o comando plot um comando para gerar grficos de duas dimenses, e o
Gnuplot espera que venhamos a definir uma funo f(x), para o comando splot devemos definir
uma funo z=f(x,y). Assim, as variveis x e y podem figurar na linha de comando do splot.
Como exemplo vamos gerar a superfcie x 2 y 2 z = 0 . Ou seja, em termos de z=f(x,y),
teramos z = x 2 y 2 , de onde entramos com o comando:
> splot x**2 - y**2
e o resultado :

x**2-y**2

100
50
0
-50
-100
10
5

-10

-5

0
0

-5
10

-10

Seguem-se outros exemplos de funes e suas respectivas entradas na linha de comando


Gnuplot.

Equao
x2 + y2
ln(| y| +| x| +1)
xy
xy +

1 sen( y )
x2 + 4

Comando Gnuplot
> splot x**2+y**2
> splot log(abs(y)+abs(x)+1)
> splot sqrt(x*y)
> splot x*y + sqrt((1-sen(y))/(x**2+4))

6.4 - Modificando o Lay-Out do Grfico


Comandos secundrios podem ser introduzidos com a finalidade de modificar o aspecto do
grfico. Esses comandos devem ser introduzidos antes de se pedir para gerar o grfico.

DOIS GRFICOS EM UMA MESMA PLANILHA


Se for necessrio lanar mais de um grfico na mesma planilha, podemos faz-lo apenas
separando as funes geradoras por vrgulas: Por exemplo, o comando:
> plot sin(x) , cos(x)
ir gerar os grficos de seno e cosseno na mesma planilha.
A seguir apresentamos aplicaes com o comando set. Uma lista geral das possibilidades
desse comando pode ser obtida digitando-se apenas:
> set
aparecero as opes vlidas para esse comando, tal como se segue:
valid set options: 'angles' '{no}arrow', {no}autoscale',
'{no}border', 'boxwidth', '{no}clabel', '{no}clip', 'cntrparam',
'{no}contour', 'data style', '{no}dgrid3d', 'dummy', 'format',
'function style', '{no}grid', '{no}hidden3d', 'isosamples', '{no}key',
'{no}label', '{no}logscale', 'mapping', 'offsets', 'output',
'{no}parametric', '{no}polar', 'rrange', 'samples', 'size',
'{no}surface', 'terminal', 'tics', 'ticslevel', '{no}time', 'title',
'trange', 'urange', 'view', 'vrange', 'xlabel', 'xrange', '{no}xtics',
'xmtics', 'xdtics', '{no}xzeroaxis', 'ylabel', 'yrange', '{no}ytics',
'ymtics', 'ydtics', '{no}yzeroaxis', 'zero', '{no}zeroaxis', 'zlabel',
'zrange', '{no}ztics', 'zmtics', 'zdtics'

SET GRID / UNSET GRID


Esses comandos acionam linhas de grade no grfico. Como exemplo, nos comandos que se
seguem, os dois primeiros servem para gerar o grfico da funo seno com linhas de grade, os
dois ltimos, fazem com que o mesmo grfico volte a ser visualizado como antes, sem as linhas de
grade:
> set grid
> plot sin(x)
> unset grid
> replot

Note que os comandos secundrios como set grid, depois de acionados fazem com que
todos os grficos a partir daquele comando sejam gerados com as linha de grade. Para desativar
esse modo de gerao, deve-se utilizar o comando unset grid.
SET KEY / UNSET KEY
Esses comandos controlam o acionamento de uma "chave" que mostra a funo que gerou
um determinado grfico. O comando set key aciona a chave indicadora e set nokey retira. Os
grficos abaixo foram gerados pela seqncia de comandos:
> unset key
> set grid
> plot sin(x),cos(x)
> set key
> unset grid
> replot
1

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

-0.2

-0.2

-0.4

-0.4

-0.6

-0.6

-0.8
-1
-10

sin(x)
cos(x)

-0.8

-5

10

-1
-10

-5

10

O primeiro comando (plot sin(x),cos(x)) gera o grfico esquerda, aps ser inserida a
grade e retirada a chave atravs dos comandos set grid e set nokey, respectivamente. O grfico
direita foi obtido pelo comando replot aps retirada a grade e colocada a chave. Note, que as
chaves so interessantes nesse caso para distinguir entre as curvas sin(x) (em azul) e cos(x) (em
verde).
LIMITES DOS EIXOS (set range)
Os valores mximos e mnimos dos eixos podem ser mudados para valores mais
apropriados, conforme a necessidade. O grfico ter seu aspecto modificado para se ajustar s

novas definies. As instrues utilizadas so set xrange, set yrange, e para grficos de trs
dimenses tambm h o set zrange. Nesses comandos deve-se especificar os valores mnimo e
mximo entre colchetes e separados pelo sinal "dois pontos".
Exemplos:
> set xrange[0:2]
> set yrange[-0.4:0.4]
> set zrange[-100:100]

muda limites do eixo x para ir de 0 at 2


muda limites do eixo y para ir de -0.4 at 0.4
muda limites do eixo z para ir de -100 at 100

Para retornar escala automtica o comando set autoscale, ou especificando o eixo que
deve retomar escala automtica set autoscale x, ou set autoscale xy. Entretanto, nessa verso 3.5
do Gnuplot, notamos que esse comando no tem sido eficiente, sendo mais aconselhvel sair do
programa e retornar em seguida.
COMO INSERIR TTULOS E TEXTOS NO GRFICO
Os comandos para inserir textos so:
> set title "figura 12" 0,0
> set xlabel "eixo dos x" 0,0
> set ylabel "eixo vertical" 0,0

Insere a palavra figura 12 na posio 0,0


Insere as palavras eixo dos x na posio 0,0
do eixo (posio central)
Insere as palavras eixo vertical na
posio 0,0

Esses indicadores de posio so opcionais e podem ser mudados, cabendo ao leitor fazer
o teste para verificar como os valores modificam o grfico. Para grficos em 3D o valor
automtico para a posio 0,0,0 e pode-se fazer o mesmo teste para se verificar quais
modificaes ocorrem. Ainda com relao posio de rtulos no grfico, o comando set key
tambm admite definies desse tipo. Por exemplo:
> set key 10, 3.7, 8
retira a chave do canto superior direito e f-la aparecer na posio (10,3.7,8) no grfico.
6.5 - Coordenadas Polares e Grficos Paramtricos
O comando set polar aciona o modo polar para grficos em 2D. Em coordenadas polares
usualmente montamos os grficos escrevendo r = f(), isto , r uma funo do ngulo . Mas,
no teclado no temos o caracter , com o que o gnuplot entender a varivel x como sendo o
ngulo. O comando set polar torna os comandos plot seguintes todos em funo polar,
formatando um grfico r . No campo plot em que escrevermos uma funo de x, todos os

valores x sero entendidos como se fossem o ngulo . No exemplo a seguir, iremos gerar o
grfico paraa espiral r = 1 + 2 :
> set polar
> plot 1 + 2*x
Onde, no ltimo comando, o ngulo est sendo representado por x. Para obter grficos polares,
muitas vezes cabe ao usurio fazer antes uma modificao na equao para que a mesma se
apresente na forma r = f(), como j fizemos anteriormente para grficos retangulares.
Caso seja necessrio retornar s coordenadas retangulares, basta utilizar:
> unset polar

Vous aimerez peut-être aussi