Post on 29-Oct-2015
Introduc~ao ao aplicativo Gnuplot
Universidade Federal do ParaInstituto de Cie^ncias Exatas e Naturais
Faculdade de MatematicaPatricia de Almeida Viana
Agosto 2011
Resumo
Neste trabalho foi feita uma investigac~ao no aplicativo Gnuplot, um software livrede grande potencial que gera gracos em duas e tre^s dimens~oes e e usado em diversasareas cientcas. Pretende-se mostrar de forma clara como comecar a trabalhar comeste aplicativo no Linux. Como fontes de pesquisa foram consultadas o manual doGnuplot e alguns tutoriais disponveis na internet.
1 Introduc~ao
O Gnuplot e um programa usado na criac~ao de gracos de func~oes e dados em duasou tre^s dimens~oes. Ele e bastante versatil e possui uma simplicidade capaz de fazer comque atraves da execuc~ao de apenas um comando de arquivo seja possvel plotar diversosgracos. Este aplicativo oferece ainda ferramentas de analise de dados, como ajuste defunc~oes aos dados experimentais. Alem de exibir gracos na tela, possibilita grava-los emdiversos formatos, como postscript, g e diretamente no formato tex. Ele e altamenteportavel, possuindo vers~oes para os sistemas operacionais linux, windows e unix. Iniciemosum estudo do aplicativo no Linux. Uma documentac~ao detalhada pode ser encontradaatraves do help do programa (assim como suas "man pages"), http://www.gnuplot.info/,http://www.duke.edu/ hpgavin/gnuplot.html ou atraves de servicos de busca na internet.
2 Primeiro Contato
O primeiro passo e executar o programa Gnuplot, para isso basta digitar o comandognuplot em alguma janela do terminal e pressionar a tecla [enter]. Feito isto, aparecer~ao al-gumas informac~oes na tela, como a vers~ao do programa que esta sendo executado, os nomesdos criadores deste aplicativo bem como um site na internet onde podem ser encontradasmaiores informac~oes a respeito deste software.
1
Figura 1:
A ultima linha deste terminal deve ser a linha de comando do gnuplot, a qual serautilizada como interface entre o usuario e o programa; esta linha de comando e da seguinteforma:
gnuplot >
A partir dessa linha de comando, digitaremos diversas instruc~oes que o Gnuplot exe-cutara gerando o graco desejado.
E se algum momento desejarmos nalizar este programa e voltar para o terminal, bastadigitar o comando quit (ou simplesmente a letra \q") e, pressionar a tecla [enter].
3 Sintaxe
Existe um conjunto de regras que ditam a forma como se escrevem as express~oes. Umadelas e a forma como se escrevem as pote^ncias (x 2) = x2.
Outra regra importante e que e obrigatorio usar o asteristico (*) em todas as operac~oesde multiplicac~ao, isto quer dizer que n~ao podemos escrever, por exemplo, plot 2x, temosque escrever plot 2 x.
A divis~ao faz-se com uma barra (/), a soma e a multiplicac~ao fazem-se com os sinais docostume (+ e ).
Alem de gracos o Gnuplot faz calculos, e e isso que faz o comando print. Porem, uma
2
regra importante no Gnuplot, e que um numero escrito sem casa decimal e interpretadocomo um numero inteiro. Por exemplo, se pedirmos para o Gnuplot calcular a divis~ao 1/2, a sua resposta sera 0. Veja:
gnuplot> print 1/20Isso ocorreu pois a divis~ao de um numero inteiro por um numero inteiro, e um inteiro.
Se quisermos obter 0.5 devemos digitar 1.0/2 ou 1/2.0:gnuplot> print 1/2.00.5O que o comando print faz e mostrar valores calculados, ou seja, podemos usa-lo como
uma 'calculadora', para efetuar as operac~oes fundamentais, fatorial, valores de seno, coseno,tangente, exponencial, o valor de uma func~ao em um ponto, etc.
4 Comandos para Plotar Gracos em 2D e 3D
Para plotarmos gracos em duas ou tre^s dimens~oes usamos respectivamente, os coman-dos plot e splot. Estes comandos sozinhos n~ao fazem absolutamente nada; para que elespossam gerar qualquer tipo de graco devemos oferecer a eles algumas informac~oes.
5 Comando Plot
O comando \plot" ja mencionado anteriormente, e utilizado para elaborar gracos emduas dimens~oes. Para isso, ele precisa receber informac~oes como: a func~ao ou nome doarquivo que contem o conjunto de dados a serem plotados, se e um histograma, se eledeve utilizar pontos, linhas ou ambos para a representac~ao do graco, tipo de ponto a serutilizado, cor destes pontos ou linhas, etc.
A entrada basica deste comando e a seguinte:gnuplot > plot with Sendo:< limites >: dene que o graco sera plotado entre dois valores de x e entre dois valores
de y, ou seja, dominio e imagem, porem se esses limites ou um deles n~ao for especicado oprograma utilizara os que achar conveniente.
< func~ao ou nome do arquivo >: dene qual ou quais func~oes e/ou conjuntos dedados ser~ao plotados. Para plotar mais de uma func~ao ou conjunto de dados utilizandoapenas um comando plot, basta separar cada func~ao ou conjunto de dados por vrgulas,como no exemplo a seguir:
gnuplot > plot x**2, G(x), \dados.dat"Neste exemplo sera gerado um graco da func~ao x2 e neste mesmo graco sera plotada
a func~ao G(x), a qual deve ter sido denida anteriormente e, o graco do conjunto de dadoscontido no arquivo \dados:dat1".
< estilos >: dene a apare^ncia do graco, ou seja, se este graco sera plotado comouma linha, como pontos, como linha e pontos alem de denir qual sera a cor utilizada. Porexemplo:
gnuplot > plot x**2 with points 2 2
3
Neste exemplo sera gerado um graco da func~ao x2, sendo que ela sera representada porpontos (with points) na cor numero 2 (with points 2) ou seja, cor ciano e, os pontos ser~aorepresentados pelo sinal de adic~ao (\+") (with points 2 2).
Existem diversos tipos de pontos e cores, basta mudar o numero de [-1,34] que a cor ouo tipo de ponto mudara.
6 Comando Splot
Este comando e extremamente semelhante ao plot, porem usa-se para plotar gracosem tre^s dimens~oes, sendo assim voce^ deve especcar func~oes de tre^s variaveis ou ter umarquivo de dados com tre^s colunas no mnimo.
O comando splot usa as mesmas opc~oes do comando plot, porem ele trabalha sempreou com func~oes de duas variavies, ou tabelas com no mnimo tre^s colunas.
7 Comandos basicos
No Gnuplot podemos denir os tipos de pontos e linhas. Para visualizar as cores, bemcomo os formatos dos pontos, basta ativar na linha de comando, a palavra test, comomostrado abaixo:
gnuplot > test
A partir desse comando aparecera a gura 2.
4
Figura 2: Tipos de pontos e cores disponveis no gnuplot
Outra coisa muito importante que n~ao podemos deixar de falar e sobre o comando help,basta digita-lo na linha de comando do Gnuplot, que ele lhe dara uma ajuda de tudo o queele pode fazer.
7.1 Outras denic~oes do programa
No Gnuplot ha uma serie de comandos para complementar informac~oes a respeito dograco de uma func~ao, por exemplo para modicar as escalas de visualizac~ao, realizardesenhos de varios gracos no mesmo sistema de eixos, colocar ttulo em um graco, colocaralgum comentario nos eixos coordenados, entre outros. Passamos ent~ao uma sintaxe destescomandos.
Ttulo:gnuplot > set title "texto"
Esta linha de comando da um ttulo ao graco.
Tipo e Espessura da linha:Atraves da linha de comando, usando apos plot f(x) os seguintes comandos: linestylen altera o estilo da linha, linetype n altera o tipo de linha. e linewidth n altera aespessura da linha.
5
Nomear eixos:gnuplot > set xlabel "Eixo x"
Esta linha de comando nomeia o eixo x no graco da func~ao.
gnuplot > set ylabel "Eixo y"
Esta linha de comando nomeia o eixo y no graco da func~ao.
gnuplot > set zlabel "Eixo z"
Esta linha de comando nomeia o eixo z no graco da func~ao. O eixo z so aparecequando estamos trabalhando no R3 , com o comando splot.
Denir para^metros de escala:gnuplot > set xrange [ninf : nsup]
Com esta linha de comando podemos determinar o intervalo de variac~ao (domnio)da variavel x no graco. O intervalo deve ser escrito entre colchetes e os numerosseparados por dois pontos [ : ].
gnuplot > set yrange [ninf : nsup]
Esta linha de comando dene o intervalo de variac~ao possvel para os valores da func~ao(contradomnio) no caso de func~oes de uma variavel. E no caso de func~oes de duasvariaveis, denira o domnio da variavel y.
gnuplot > set zrange [ninf : nsup]
No caso de func~oes de duas variaveis, esta linha de comando dene o contradomnioda func~ao.
Observac~ao: Uma vez modicada a faixa de variac~ao de uma variavel, esta modicac~aopermanecera valida para todos os gracos feitos posteriormente.
Denir valores dos eixos:Para denir os valores que aparecer~ao nos eixos podemos usar o comando set xtics,set ytics e set ztics. A sintaxe do comando e:
gnuplot > set xtics xinicial,incremento,xfinal
onde xinicial e xnal s~ao opcionais.
Exemplo:
gnuplot > set xtics -2,1,3
No exemplo acima, aparecer~ao os valores -2, -1, 0, 1, 2, 3 no eixo x, caso estes valoresestejam dentro do limite de variac~ao para a variavel x denido no comando set xrange.Os comandos set ytics e set ztics s~ao analogos ao set xtics.
Mostrar eixos x e y:gnuplot > set zeroaxis
Com este comando e exibido o sistema de eixos e quando possvel a sua origem,tornando o graco mais completo e facil de entender. E recomendado colocar estecomando logo no incio para que aparecam os eixos em todos os demais gracos.
6
Mostrar grades:gnuplot > set grid
Mostra as grades nos eixos x e y. Ou ainda, se quizermos desativar a opc~ao gradebasta utilizar o comando unset grid.
Efeito de Solido:gnuplot > set hidden3d
O comando acima e utilizado no modo 3D para \esconder\ o que ca "atras" dasuperfcie.
Resoluc~ao do Graco:Para tracar o graco de uma func~ao, o Gnuplot escolhe alguns pontos e calcula o valorda func~ao nestes pontos. A quantidade padr~ao de pontos escolhidos no eixo x paragracos 2D e 100. No caso de gracos tridimensionais a quantidade padr~ao de pontostambem e de 100, sendo tomados 10 pontos no eixo x e no eixo y. Esta quantidadepode ser alterada atraves dos comandos set samples n para gracos no plano e setisosamples k,m para gracos no espaco, sendo que n e o numero de pontos no eixox e k, m correspondem ao numero de pontos nos eixos x e y, respectivamente.
Bordas do graco:O comando set border controla a exibic~ao das bordas do graco gerado com oscomandos plot e splot. Para excluir todo o contorno da janela graca utilizamoso comando unset border. Para incluir uma das bordas utilizamos o comando setborder n, sendo n o numero associado a borda desejada. Para colocar duas ou maisbordas somamos os respectivos numeros e utilizamos set border k, onde k e a somados numeros associados as bordas.
Outra opc~ao e o comando reset, que faz com que todas as modicac~oes de formatac~aosejam canceladas de uma vez so.
Diretorio: Para navegarmos pelo diretorio:gnuplot > pwd
Isto dara a sua localizac~ao atual. Se caso quizermos modicar o diretorio basta digitaro comando:
gnuplot > cd ``novo diretorio''
Salvando arquivos:Para salrmos um arquivo, devemos direcionar a sada padr~ao para um arquivo, comoo exmplo abaixo:
O formato postscript "eps", e o formato original do LATEX. Para exportar o gracodo Gnuplot para o LATEXbasta utilizar o comando:
gnuplot > set terminal postscript eps color
gnuplot > set output ''arquivo.eps''
gnuplot > replot
7
Para usarmos ttulos acentuados devemos usar o seguinte comando:set encoding iso 8859 1
Exemplo: set title "Taxa de transmissn3431 o'Resultando o ttulo \Taxa de transmiss~ao"
7.2 Modicac~oes na posic~ao das legendas
Podem ser realizadas atraves dos comandos: set key left bottom, set key rightbottom, set key left top e set key right top.
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 3: set key left bottom (Legenda no canto inferior esquerdo)
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 4: set key righ bottom (canto inferior direito)
1O codigo desses acentos pode ser obtido no site http://www.ic.unicamp.br/ stol/EXPORT/www/ISO-8859-1-Encoding.html
8
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 5: set key left top (canto superior esquerdo)
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 6: set key righ top (canto superior direito)
9
Para construir gracos a partir de um conjunto de dados podemos utilizar plot ou splot,dependendo das dimens~oes desejadas.
gnuplot > plot "dados.txt"
Ja os gracos 3D (Ver gura 7) s~ao construdos a partir do comando splot. Como, porexemplo:
logp
x2 + y2
gnuplot > splot log(sqrt(x**2+y**2))
-10-5
0 5
10-10
-5
0
5
10
0 0.5
1 1.5
2 2.5
3
log(sqrt(x**2+y**2))
Figura 7: Graco 3d
10
As vezes e interessante construir gracos mais complexos, usando duas ou mais func~oes,podemos apenas separar as func~oes por vrgulas, pode-se usar ',n'(vrgula e barra invertida)como terminador de linha e denir a func~ao desejada na linha seguinte ou, outra possibil-idade e usar a opc~ao rep (de replot) a cada func~ao adicional, onde s~ao apresentadas asfunc~oes simultaneamente.
Figura 8 gnuplot > plot sin(x),cos(x)ou apenas usar o comando replotgnuplot > plot sin(x)
gnuplot > replot cos(x)
Podemos tambem usar ,n para continuar na outra linhagnuplot > plot sin(x), ncos(x)
Figura 9
8>>>>>>>:gnuplot > set grid
gnuplot > set key boxgnuplot > plot sin(x); n
cos(x=3); nx14 1
ou
8>>>>>>>:gnuplot > set grid
gnuplot > set key boxgnuplot > plot sin(x)gnuplot > rep cos(x=3)gnuplot > rep x
14 1
O comando: set key box inseri uma caixa na legenda.
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-10 -5 0 5 10
sin(x)cos(x)
Figura 8:
-2
-1.5
-1
-0.5
0
0.5
1
-10 -5 0 5 10
sin(x)cos(x/3)
x/14-1
Figura 9:
8 Algumas denic~oes a serem utilizadas com o argu-
mento with
Voce^ pode ver que tipos de gracos o Gnuplot pode desenhar. Para especcar o estilode graco temos os comandos: lines, points, linespoints e impulses.
11
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 10: lines: Utiliza apenas uma linha que liga todos os pontos. Comando: plotsin(x) with lines.
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 11: points: utiliza pontos com formatos diferentes como quadrados, sinais de mais,diamantes, asteristicos,... Comando: plot sin(x) with points.
12
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 12: linespoints: e a combinac~ao dos dois tens anteriores; utiliza uma linha que ligaos pontos e alem disso mostra os pontos como no tem anterior. Comando: plot sin(x)with linespoints.
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6
Seno
Figura 13: impulses: O graco aparece \rachurado". Comando: plot sin(x) with im-pulses.
9 Redirecionamento de Output
Quando estamos trabalhando com o Gnuplot, a sada padr~ao do graco e para o dis-play, ou seja, ele desenha o graco em um nova janela e a exibe no monitor. Na maiorparte dos casos, desejamos gerar gracos em arquivos que possamos incluir em algum tra-balho, como relatorios. Para isto o Gnuplot permite o redirecionamento de output paraum arquivo, ou seja, permite gerar o graco em um arquivo cujo formato e reconhecido poroutros programas, como o LATEX.
Para isto, devemos especcar o tipo de terminal que sera utilizado, uma lista podeser obtida a partir do comando dentro do Gnuplot.
gnuplot > ?term (Figura:14)
13
Figura 14:
10 Trabalhando a Matematica no Gnuplot
Vamos tracar o graco da func~ao polinomial 9x3 + x2
2 7x
8+ 4. Observe que denimos
o nome da func~ao no caso, f(x) e em seguida plotamos a mesma pelo seu nome.gnuplot>f(x)= 9*x**3+0.5*x**2-7.0/8.0*x+4gnuplot>plot f(x)
14
-10000
-8000
-6000
-4000
-2000
0
2000
4000
6000
8000
10000
-10 -5 0 5 10
f(x)
Figura 15: Func~ao Polinomial
Agora vamos xar o domio [1 : 1]x[1 : 1] e plotar tre^s superfcies sem gradesou marcas, com estilos diferentes. Com os comando set xrange e yrange, podemosdeterminar o intervalo de variac~ao (domnio) das variaveis x e y no graco. O intervalodeve ser escrito entre colchetes e os numeros separados por dois pontos [ : ]. Assim:
xy; x2 + y3 e x3 + y2:
gnuplot>set xrange [-1:1]gnuplot>set yrange [-1:1]gnuplot>splot x*y with lines, x**2*y**3 with linespoints, x**3*y*2 with pointsObtemos a gura 16.
15
-1-0.5
0 0.5
1-1
-0.5
0
0.5
1
-2.5-2
-1.5-1
-0.5 0
0.5 1
1.5 2
2.5
x*yx**2*y**3x**3*y*2
Figura 16:
Para tracar o graco de uma func~ao, o Gnuplot escolhe alguns pontos e calcula o valorda func~ao nestes pontos. A quantidade padr~ao de pontos escolhidos no eixo x para gracos2D e 100. No caso de gracos tridimensionais a quantidade padr~ao de pontos tambem ede 100, sendo tomados 10 pontos no eixo x e no eixo y. Esta quantidade pode ser alteradaatraves dos comandos set samples n para gracos no plano e set isosamples k,m paragracos no espaco, sendo que n e o numero de pontos no eixo x e k, m correspondem aonumero de pontos nos eixos x e y,respectivamente.
Uma vericac~ao matematica, s~ao para obter as curvas de nveis.Para obter as curvas de nvel de z = xy, utilizamos o set contour para curva de nvel
com altura dada, melhoramos a malha graca com samples e isosamples, para nomear oseixos x, y e z usamos o xlabel, ylabel e zlabel, respectivamente. Observe que aparecer~aosuas repectivas curvas de nvel no plano.
gnuplot>set contourgnuplot>set samples 20gnuplot>set isosamples 21gnuplot>set title "Curvas de nvel"gnuplot>splot x*y
16
-1-0.5
0 0.5
1 -1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
Curvas de nivel
x*y 1 0.5 0
-0.5
Figura 17: Curva de nvel z = xy
Agora as curvas de nvel podem aparecer na superfcie e no plano, fazemos isso comos comandos set contour surface onde aparecera a curva de nvel na superfcie e o setcontour both que mostra a curva de nvel no plano.
x2 y2
gnuplot>set contour surfacegnuplot>set contour bothgnuplot>splot x**2-y**2
-1-0.5
0 0.5
1 -1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
Curvas de nvel
x**2-y**2 1 0.5 0
-0.5
Figura 18:
17
Uma func~ao denida por partes tem a forma:
f(x) =
sen(x) se x < 0;5 x se x > 0:
onde cada parte e associada a um intervalo. A notac~ao 1/0 usada abaixo representa oinnito no Gnuplot.
set samples 300
f(x) = x < 0 ? sin(x) : x > 0 ? 5-x : 1/0plot f(x)
-5
-4
-3
-2
-1
0
1
2
3
4
5
-10 -5 0 5 10
f(x)
Figura 19: Func~ao denida por partes.
18
Curvas parametrizadas no espaco tridimensional.
Para plotar curvas parametrizadas no espaco R3, da forma r(t) = (x(t); y(t); z(t)),usaremos um truque que n~ao esta no Help do Gnuplot, mas que e similar a plotagem deuma superfcie parametrizada. Desse modo, deniremos o padr~ao como:
gnuplot> set parametricPara plotar a curva helicoidal r(t) = (cos(t); sen(t); t) com t no domnio [0; 4], denire-
mos esse dominio com set urange, substituirmos o para^metro t pelo para^metro u, que e opadr~ao para plotar superfcies parametrizadas.
gnuplot>set urange [0:4*pi]gnuplot>splot cos(u), sin(u), u
-1-0.8
-0.6-0.4
-0.2 0
0.2 0.4
0.6 0.8
1-1-0.8
-0.6-0.4
-0.2 0
0.2 0.4
0.6 0.8
1
0 2 4 6 8
10 12 14
cos(u), sin(u), u
Figura 20:
19
A express~ao parametrica de um crculo e:x = sen(t)y = cos(t);
com 0 < t < 2:
gnuplot > set parametricgnuplot > set xrange [-1:1]gnuplot > set yrange [-1:1]gnuplot > plot [0:2*pi] sin(t),cos(t) linewidth 4
-1
-0.5
0
0.5
1
-1 -0.5 0 0.5 1
sin(t), cos(t)
20
Exemplo 10.1 Agora observemos r(t) = 1 + cos(t), a chamada cardioide.gnuplot > set parametricgnuplot > r(t) = 1+cos(t)gnuplot > plot [0:2*pi] r(t)*cos(t),r(t)*sin(t)
-1.5
-1
-0.5
0
0.5
1
1.5
-0.5 0 0.5 1 1.5 2
r(t)*cos(t), r(t)*sin(t)
21
Derivadas
Dada uma func~ao f derivavel no ponto a 2 Dom(f ), sabemos que a reta tangente aograco de f no ponto (a; f(a)) tem a seguinte equac~ao:
y y0 = m(x a)onde y0 = f(a) e m = f(a). Assim, podemos escrever a equac~ao da reta tangente ao
graco de f no ponto (a; f(a)) da seguinte forma:g(x) = f(a) + f(a):(x a)Usando o Gnuplot para visualizar o graco de uma func~ao e a reta tangente num ponto
(a; f(a)) pertencente ao graco. Vamos tomar a func~ao f(x) = x2+2x. Ent~ao sua derivadae f 0(x) = 2x+2. Para visualizar a reta tangente ao graco de f no ponto (2; f(2)), passemosao Gnuplot os seguintes comandos:
gnuplot > resetgnuplot > f(x)=x**2+2*xgnuplot > df(x)=2*x+2gnuplot > g(x)=f(2)+df(2)*(x-2)gnuplot > plot f(x), g(x)
-80
-60
-40
-20
0
20
40
60
80
100
120
-10 -5 0 5 10
f(x)g(x)
22
Superfcies
A visualizac~ao de superfcies e analoga a visualizac~ao de curvas planas. Neste caso ocomando basico e splot.
Na gura 21 e mostrada uma superfcie dada pela func~ao f(x; y) = x+y, que tem comograco um plano. Basta considerar f(x; y) = z, temos:
x+ y z = 0Para constatar com o Gnuplot, facamos:gnuplot > f(x,y)=x+ygnuplot > splot f(x,y)
-10-5
0 5
10-10
-5
0
5
10
-20-15-10-5 0 5
10 15 20
f(x,y)
Figura 21:
Agora podemos observar outras superfcies com comandos diferentes.
Exemplo 10.2 (Paraboloide) O graco da func~ao f(x; y) = x2 + y2 o que chamamos deparaboloide. Com o Gnuplot:
O comando set isosample 20,20 e para melhorar a malha, deixa -la mais fechada. Ja ocomando set hidden3d e para diferenciar as faces da superfcie.
gnuplot > set isosample 20,20gnuplot > set hidden3dgnuplot > f(x,y)=x**2+y**2gnuplot > splot f(x,y),0
23
f(x,y)0
-10-5
0 5
10-10
-5
0
5
10
0
50
100
150
200
Figura 22:
Se considerarmos a func~ao f(x; y) = x2 + (y 5)2 teremos uma pequena modicac~aono ponto mais baixo do paraboloide. Antes, o \bico" do paraboloide era o ponto (0; 0; 0) noplano XY , agora sera o ponto (0; 5; 0).
gnuplot > f(x,y),5
f(x,y)5
-10-5
0 5
10-10
-5
0
5
10
0 20 40 60 80
100 120 140 160 180 200
Figura 23:
Agora, considerando a func~ao f(x; y) = x2+ y2+50, o bico do paraboloide sera o ponto(0; 0; 50). Basta digitar o comando
gnuplot > splot f(x,y),50
24
f(x,y)50
-10-5
0 5
10-10
-5
0
5
10
0 20 40 60 80
100 120 140 160 180 200
Figura 24:
Exemplo 10.3 (Sela) Considere a func~ao f(x; y) = x2 y2 e passemos ao Gnuplot osseguintes comandos:
gnuplot > set isosample 20,20gnuplot > set hidden3dgnuplot > f(x,y)=x**2-y**2gnuplot > splot f(x,y)
f(x,y)
-10-5
0 5
10-10
-5
0
5
10
-100-80-60-40-20
0 20 40 60 80
100
Figura 25:
25
Observe que cortes paralelos ao plano XZ nos d~ao parabolas com concavidade para cima,pois isso equivale a y constante em f (x, y), ou seja,
f(x; y) = f(x; k) = x2 + kCortes paralelos ao plano Y Z nos d~ao parabolas com concavidade para baixo, uma vez
que nesse caso, x e constante e temos:f(x; y) = f(k; y) = k y2Para ver isso, passe ao Gnuplot os comandos:gnuplot > splot f(x,2)gnuplot > splot f(3,y)
Exemplo 10.4 (Chapeu de Cowboy) E a apare^ncia do graco da func~ao:
f(x; y) =sen(
px2+y2)p
x2+y2
Que para o Gnuplot passaremos:gnuplot > set isosample 40,20gnuplot > set hidden3dgnuplot > set zrange[-0.5:1.5]gnuplot > f(x,y)=(sin(sqrt(x**2+y**2)))/(sqrt(x**2+y**2))gnuplot > splot f(x,y)
f(x,y)
-10-5
0 5
10-10
-5
0
5
10
-0.5
0
0.5
1
1.5
Figura 26:
26
Exemplo 10.5 (Caixa de ovos) O graco da func~ao f(x; y) = senx+cos x lembra bastanteesse objeto:
gnuplot > set isosample 60,20gnuplot > set hidden3dgnuplot > set zrange[-2:2]gnuplot > f(x,y)=sin(x)+cos(x)gnuplot > splot f(x,y)
f(x,y)
-10-5
0 5
10-10
-5
0
5
10
-2-1.5
-1-0.5
0 0.5
1 1.5
2
Figura 27:
27
11 Superfcies Parametrizadas
Esfera Parametrizada
(cos(u)cos(v); 2sen(u)cos(v); 3sen(v))
gnuplot>set parametricgnuplot> set zeroaxisgnuplot > set key boxgnuplot > splot cos(u)*cos(v),2*sin(u)*cos(v),3*sin(v)gnuplot > set contour basegnuplot > set grid xtics ytics ztics
-1-0.8
-0.6-0.4
-0.2 0
0.2 0.4
0.6 0.8
1-2-1.5
-1-0.5
0 0.5
1 1.5
2
-3-2-1 0 1 2 3
cos(u)*cos(v), 2*sin(u)*cos(v), 3*sin(v) 2 1 0 -1 -2
Se quizermos vericar somente as curvas de nvel da superfcie, adicionamos os seguintescomandos:
gnuplot > unset surface Este comando esconde a superfciegnuplot > set view 0,0 Este comando mostra como queremos visualizar o graco.
28
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-3-2-1 0 1 2 3
2 1 0 -1 -2
Cilindro Circular Reto
Uma observac~ao diferente nesta gura e em relac~ao ao comando unset tics e unsetborder, com estes comando escondemos os eixos e observamos somente a gura..
(cos(u); sen(u); v)
gnuplot>set parametricgnuplot>set urange [0:2*pi]gnuplot>set hidden3dgnuplot> unset bordergnuplot> unset ticsgnuplot>set vrange [-4:4]gnuplot>splot cos(u), sin(u), v
cos(u), sin(u), v
29
Toro Parametrizado
Uma outra forma de visualizac~ao de gracos e o efeito usado com o with, usamdo ocomando with pm3d, e algo como uma distribuic~ao de densidade da cor, o que signicaque cada pedaco de superfcie colorida e mostrada na parte infeior do graco; e ainda secolocarmos logo apos do plot ou splot junto com a func~ao que queremos plotar o comandotitle 'Nome' isto modicara o que aparece na legenda, ou seja, e uma edic~ao do quequeremos nomear na legenda, observemos o seguinte efeito:
((1 0:2cos(v))cos(u); (1 0:2cos(v))sen(u); 0:2sen(v))gnuplot>set parametricgnuplot>splot (1-0.2*cos(v))*cos(u), (1-0.2*cos(v))*sin(u), 0.2*sin(v) with
pm3d title 'Toro Parametrizado'
Toro Parametrizado
30
Prisma Hexagonal
(cos(v)3cos(u)3; sen(v)3cos(u)3; sen(u)3)
gnuplot>set parametricgnuplot>unset bordergnuplot>unset ticsgnuplot>set isosamples 100,20gnuplot>splot cos(v)**3*cos(u)**3, sin(v)**3*cos(u)**3, sin(u)**3
Prisma Hexagonal
cos(v)**3*cos(u)**3, sin(v)**3*cos(u)**3, sin(u)**3
Figura 28:
31
Helice Parametrizada
((1 0:1cos(v))cos(u); (1 0:1cos(v))sen(u); 0:1(sin(v) + u=1:7 10))gnuplot>set parametricgnuplot>set isosamples 100,20gnuplot>set urange [0:10*pi]gnuplot>set vrange [0:2*pi]gnuplot>unset bordergnuplot>unset ticsgnuplot>set hidden3dgnuplot>splot (1-0.1*cos(v))*cos(u),(1-0.1*cos(v))*sin(u),0.1*(sin(v)+u/1.7-10)
Helice parametrizada
(1-0.1*cos(v))*cos(u), (1-0.1*cos(v))*sin(u), 0.1*(sin(v)+u/1.7-10)
Figura 29:
32
Concha Parametrizada
cos(u):u:
1 + cos(v)
2; sen(v)
u
2; sen(u):u:
1 + cos(v)
2
gnuplot>set isosamples 40,20gnuplot>set urange [0:2*pi]gnuplot>set vrange [0:2*pi]gnuplot>set zrange [-3:1.5]gnuplot>splot cos(u)*u*(1+cos(v)/2), sin(v)*u/2, sin(u)*u*(1+cos(v)/2)gnuplot> set autoscale z
Concha Parametrizada
cos(u)*u*(1+cos(v)/2), sin(v)*u/2, sin(u)*u*(1+cos(v)/2)
Figura 30:
33
Dois Toros Parametrizados Entrelacados
(cos(u) + :5cos(u)cos(v); sen(u) + :5sen(u)cos(v); :5sen(v); 1 + cos(u)
+:5cos(u)cos(v); :5sen(v); sen(u) + :5sen(u)cos(v))
gnuplot>set urange [-pi:pi]gnuplot>set vrange [-pi:pi]gnuplot>set isosamples 50,20gnuplot>splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v)
with lines, 1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with
lines
Toros
cos(u)+.5*cos(u)*cos(v), sin(u)+.5*sin(u)*cos(v), .5*sin(v)1+cos(u)+.5*cos(u)*cos(v), .5*sin(v), sin(u)+.5*sin(u)*cos(v)
Figura 31:
34
Intersec~ao de Dois Cilindros
(u;p4 u2; v; u;
p4 u2; v;
p4 v2; u; v;
p4 v2; u; v)
Comandos:set parametricset hidden3dset isosamples 30,30set urange [-2:2]set vrange [-2:2]set zrange [-2:2]unset ticssplot u, sqrt(4-u**2), v,u, -sqrt(4-u**2), v,sqrt(4-v**2), u, v,-sqrt(4-v**2), u, v
u, sqrt(4-u**2), vu, -sqrt(4-u**2), vsqrt(4-v**2), u, v
-sqrt(4-v**2), u, v
Figura 32:
12 Editando Arquivos com Comandos do Gnuplot
Observamos que ate agora, todas as instruc~oes foram feitas diretamente na linha decomando. Para que n~ao seja necessario digitarmos todos os comandos a cada novo graco aser feito, e possvel criarmos um arquivo em um editor de texto, contendo todas as instruc~oespara a construc~ao do graco.
Depois de criado, o arquivo e lido e interpretado pelo Gnuplot atraves do comando load,cuja sintaxe e dada a seguir:
gnuplot> load "nome do arquivo".
35
13 Criar arquivo no bloco de notas
Apos digitarmos todos os comandos necessarios para tracar o graco desejado, salvamoso arquivo numa pasta de trabalho. Todos os comandos utilizados,podem ser colocados emum mesmo arquivo (exe1.plt) da seguinte maneira:
## arquivo exe1.plt# comandos para realizar o graco da func~ao cos(2x)#set title "teste1-cosseno"set xrange [0:2*pi]set yrange [-1.2:1.2]set xlabel "eixo x"set ylabel "eixo y"plot cos(2*x)
Cosseno
cos(2x)
Figura 33: Figura feita com Gnuplot a partir da leitura de dados.
Observac~ao: Se utilizarmos o sinal # (sustenido) no incio de uma linha do arquivo, oGnuplot n~ao ira ler esta linha, ent~ao usamos # para fazer comentarios.
14 Visualizando o Modo Multiplot
O modo multiplot permite a visualizac~ao de varios gracos. Observe este graco e seuscript:
set multiplot
set size 1,0.5;
set origin 0.0,0.5; plot sin(x);
set origin 0.0,0.0; plot cos(x)
unset multiplot
36
Figura 34:
Veja a func~ao de cada comando: Com o comando set multiplot passamos para o modo'multiplot', set origin xa a origem do graco, set size, xa o tamanho do graco eunset multiplot, sai do modo 'multiplot'.
15 Aplicac~oes Cientcas
O aplicativo gnuplot e destinado a visualizac~ao de gracos e superfcies, uteis em aplicac~oescientcas nas areas de fsica, estatstica, engenharias (cartograca, meca^nica, eletrica, ...).Vejamos a seguir algumas dessas aplicac~oes.
Aplicac~ao na Estatstica
O graco estatstico e uma forma de apresentac~ao dos dados estatisticos, cujo objetivo eo de produzir no investigador ou no publico em geral, uma impress~ao mais rapida e viva dofeno^meno em estudo. Os estatsticos usam o Gnuplot com o objetivo de obter diversicac~oesgracas na forma de linhas, barras...
Vejamos uma aplicac~ao classica na estatstica, o graco de barras:
37
0
50000
100000
150000
200000
250000
300000
1891-1900
1901-1910
1911-1920
1921-1930
1931-1940
1941-1950
1951-1960
1961-1970
US immigration from Northern EuropePlot selected data columns as histogram of clustered boxes
DenmarkNetherlands
NorwaySweden
Figura 35:
Comandos:Para exibir este graco, criamos um arquivo de dados 'immigration.dat', o qual tera
todas as informac~oes das investiga~oes feita.
Em seguida passamos os seguintes comandos ao Gnuplot:set title "US immigration from Northern Europe nnPlot selected data columns as his-
togram of clustered boxes"set auto xset yrange [0:300000]set style data histogramset style histogram cluster gap 1set style ll solid border -1set boxwidth 0.9set xtic rotate by -45set bmargin 10plot 'immigration.dat' using 6:xtic(1) ti col, " u 12 ti col, " u 13 ti col, " u 14 ti col
38
Aplicac~ao na Engenharia Cartograca
Uma interessante aplicac~ao do Gnuplot e a visualizac~ao de Projec~oes Cartogracas,podendo ser util no aprendizado de Cartograa Matematica, uma vez que o aluno pode escr-ever as equac~oes das projec~oes, modicar o paralelo padr~ao, modicar o ponto de tange^ncia,modicar a escala, calcular o fator de escala, visualizar a projec~ao, dentre outras possibili-dades.
A seguir observemos algumas guras cartogracas. Estas guras podem ser encontradasna pagina ocial do Gnuplot (www.gnuplot.info/).
-100
-80
-60
-40
-20
0
20
40
60
80
100
-200 -150 -100 -50 0 50 100 150 200
world.datworld.cor
Figura 36:
-1-0.8
-0.6-0.4
-0.2 0
0.2 0.4
0.6 0.8
1-1-0.8-0.6-0.4-0.2 0
0.2 0.4 0.6 0.8 1-1
-0.5
0
0.5
1
Versao 3D usando o sistema de coordenadas esfericas
cos(u)*cos(v), cos(u)*sin(v), sin(u)world.datworld.cor
Figura 37:
39
-1-0.8
-0.6-0.4
-0.2 0
0.2 0.4
0.6 0.8
1-1.2-1-0.8-0.6-0.4-0.2 0
0.2 0.4 0.6 0.8 1
-1
-0.5
0
0.5
1
3D solid version through hiddenlining
cos(u)*cos(v), -cos(u)*sin(v), sin(u)world.dat u 1:2:(1.001)
world.cor
Figura 38:
-1-0.5
0 0.5
1-1-0.5 0
0.5 1-100-80-60-40-20
0 20 40 60 80
100
Versao 3D usando sistema de coordenadas cilindricas
cos(u), sin(u), vworld.datworld.cor
Figura 39:
Para produzirmos as guras anteriores, teremos que construir tre^s arquivos: world.dat,world.cor e world.dem, estes arquivos podem ser baixados no site do Gnuplot. A partirdestes arquivos basta digitar na linha de comando do Gnuplot load 'world.dem', arquivode dados ja criado, que visualizaremos tais guras.
40
Considerac~oes Finais
O Gnuplot foi desenvolvido inicialmente por Thomas Williams e Colin Kelly em 1986com o objetivo de criar um programa que lhes permitisse visualizar gracamente propriedadesdas equac~oes matematicas relacionadas ao feno^meno do eletromagnetismo. Primeiramentefoi denominado de NEWPLOT, mas ao descobrirem que ja existia outro programa com essemesmo nome, mudaram para Gnuplot. O programa destina-se a criac~ao de gracos a partirde func~oes e conjuntos de dados em duas ou tre^s dimens~oes. O Gnuplot e bastante utilizadodevido a sua simplicidade, versatilidade e automatizac~ao das tarefas, o que possibilita tracardiversos gracos a partir da execuc~ao de apenas um arquivo de comandos. Segundo Galo(2003) o aplicativo Gnuplot e destinado a visualizac~ao de gracos e superfcies, uteis emaplicac~oes cientcas nas areas de fsica, matematica, estatstica e engenharias. Este aplica-tivo e de domnio publico e tem vers~oes para uma serie de sistemas operacionais, tais como:Windows, Unix, Linux.
Refere^ncias
[1] FONTENELE, F. C. F. GNUPLOT: comandos basicos e aplicac~oes em sala de aula.Monograa do Curso de Matematica, 2007.
[2] GALO, Mauricio. Instruc~oes iniciais para o uso do Gnuplot. Disponvel no site:www.prudente.unesp.br/dcartog/galo/gnuplot
[3] Pagina central do Gnuplot: www.gnuplot.info.
[4] Gnuplot um programa para fazer gracos e alguns calculos: Disponvel no seguintesite: http://t16web.lanl.gov/Kawano/gnuplot/index-e.html.
41