Você está na página 1de 122

Introdução Abreviada ao Gnuplot

Salviano A. Leão

6 de agosto de 2018
Gnuplot
Sumário

1. Funções Básicas

Física Computacional Prof. Salviano A. Leão


Sumário

1. Funções Básicas
2. Gráfico de Funções

Física Computacional Prof. Salviano A. Leão


Sumário

1. Funções Básicas
2. Gráfico de Funções
• Gráficos unidimensionais
• Gráficos bidimensionais
• Gráficos de Funções Paramétricas
• Gráficos em coordenadas polares

Física Computacional Prof. Salviano A. Leão


Sumário

1. Funções Básicas
2. Gráfico de Funções
• Gráficos unidimensionais
• Gráficos bidimensionais
• Gráficos de Funções Paramétricas
• Gráficos em coordenadas polares

3. Gráficos de Arquivos

Física Computacional Prof. Salviano A. Leão


Sumário

1. Funções Básicas
2. Gráfico de Funções
• Gráficos unidimensionais
• Gráficos bidimensionais
• Gráficos de Funções Paramétricas
• Gráficos em coordenadas polares

3. Gráficos de Arquivos
• Gráficos unidimensionais
• Gráficos bidimensionais

Física Computacional Prof. Salviano A. Leão


Sumário

1. Funções Básicas
2. Gráfico de Funções
• Gráficos unidimensionais
• Gráficos bidimensionais
• Gráficos de Funções Paramétricas
• Gráficos em coordenadas polares

3. Gráficos de Arquivos
• Gráficos unidimensionais
• Gráficos bidimensionais

4. Tipos de Terminais

Física Computacional Prof. Salviano A. Leão


Sumário

1. Funções Básicas
2. Gráfico de Funções
• Gráficos unidimensionais
• Gráficos bidimensionais
• Gráficos de Funções Paramétricas
• Gráficos em coordenadas polares

3. Gráficos de Arquivos
• Gráficos unidimensionais
• Gráficos bidimensionais

4. Tipos de Terminais
5. Scripts.

Física Computacional Prof. Salviano A. Leão


Gnuplot online

NOTA
Atualmente há dois sites que fornecem o gnuplot na web:
• http://gnuplot.respawned.com/
• http://plotshare.com/

NOTA
Exemplo de interface de um programa C++ usando o gnuplot:
• http://www.robertnz.net/gnuplot.htm

NOTA
Uma alternativa livre ao gnuplot é o ctioga2:
• http://ctioga2.sourceforge.net/

Física Computacional Prof. Salviano A. Leão


Medida experimentais: arquivo de dados

NOTA
Para fazer um gráfico de resultado experimentais faça:
• Crie seu arquivo de dados, tabela em um editor sem formatação, como por exemplo no
GNU/Linux emacs, nano, gedit, xed, etc. No Windows use o Notepad.
• Ao criar um arquivo separado, isso lhe garante que você poderá usar qualquer software
para fazer o seu gráfico.
• Nos softwares como o gnuplot você pode fazer o gráfico usando diretamente o arquivo
de dados.
• Nos softwares gráficos como Origin, qtiplot, Labplot, etc, você importar o seu arquivo
de dados dentro de suas planilhas.
• Crie quantas colunas forem necessária e estabeleça um padrão para a separação entre
as colunas;
• Ao usar um software gráfico nunca edite diretamente seus arquivo de dados na plani-
lha do software. Importe o arquivo de dado no software e depois faça o gráfico. Caso
contrário, você ficará restrito ao software no qual editou seus dados.

Física Computacional Prof. Salviano A. Leão


Funções Básicas

abs (x) Para x qualquer, retorna o valor absoluto de x com o mesmo tipo de x.

Para x qualquer, retorna ℜ(x)2 + ℑ(x)2 para x complexo.


p
abs (x)
acos (x) Para x qualquer, retorna um valor entre −π ≤ acos(x) ≤ π se −1 ≤ x ≤ 1.
acosh (x) Para x qualquer, retorna um valor entre −π ≤ acos(x) ≤ π se x ≥ 1.
arg(x) Para x qualquer, retorna a fase de x.
asin(x) Para x qualquer, retorna o sen −1 x (inverso do seno).
asinh(x) Para x qualquer, retorna o senh −1 x (inverso do seno hiperbólico).

Física Computacional Prof. Salviano A. Leão


Funções Básicas II

atan(x) Para x qualquer, retorna o tg −1 x (inverso da tangente).


atan2(y, x) Para x e y inteiros ou reais, retorna tg −1 (y/x) (inverso da tangente).
atanh(x) Para x qualquer, retorna o tgh −1 x (inverso da tangente hiperbólica).
besj0(x) Para x inteiro ou real, retorna a função de Bessel j0 (x).
besj1(x) Para x inteiro ou real, retorna a função de Bessel j1 (x).
besy0(x) Para x inteiro ou real, retorna a função de Bessel y0 (x).
besy1(x) Para x inteiro ou real, retorna a função de Bessel y1 (x).

Física Computacional Prof. Salviano A. Leão


Funções Básicas III

ceil(x) Para ⌈x⌉, retorna o menor inteiro não menor que x (parte real).
cos(x) Para x qualquer, retorna o cosseno de x, cos x.
cosh(x) Para x qualquer, retorna o cosseno hiperbólico de x, cosh x, .
erf (x) Para x qualquer, retorna a função erro Erf(real(x)), do real(x).
erf c(x) Para x qualquer, retorna Erfc(real(x)) = 1.0 − Erf(real(x)).
exp(x) Para x qualquer, retorna ex .
f loor(x) Para x qualquer, retorna ⌊x⌋, o maior inteiro não maior do que x (parte real).

Física Computacional Prof. Salviano A. Leão


Funções Básicas IV

gamma(x) Para x qualquer, retorna a função gama Gamma(real(x)), do real(x).


ibeta(p, q, x) Para x qualquer, retorna a função ibeta Ibeta(real(p, q, x)), do real(p,q,x).
inverf (x) Para x qualquer, retorna o inverso da função erro do real(x).
igamma(a, x) Para x qualquer, retorna a função igama Igamma(real(a, x)), do real(a,x).
imag(x) Para x complexo, retorna a parte imaginária x como um número real.
invnorm(x) Para x qualquer, retorna o inverso da distribuição normal do real(x).

Física Computacional Prof. Salviano A. Leão


Funções Básicas V

int(x) Para x real, retorna a parte inteira de x, truncando a parte decimal.


lambertw(x) Para x real, retorna a função de Lambert W .
lgamma(x) Para x qualquer, retorna a função lgama Lgamma(real(x)), do real(x).
log(x) Para x qualquer, retorna o logaritmo natural de x (base e), ln x = log e x.
log10(x) Para x qualquer, retorna o logaritmo de x na base 10, log 10 x.
norm(x) Para x qualquer, retorna a função distribuição normal (Gaussiana) do real(x).

Física Computacional Prof. Salviano A. Leão


Funções Básicas VI

rand(x) Para x qualquer, retorna um número pseudo aleatório Rand(real(x)).


real(x) Para x qualquer, retorna a parte real de x.
sgn(x) Para x qualquer, retorna 1 se x > 0, −1 se x < 0, 0 se x = 0. O imag(x) é ignorado.
sin(x) Para x qualquer, retorna sen x.
sinh(x) Para x qualquer, retorna senh x.

sqrt(x) Para x qualquer, retorna x.
tan(x) Para x qualquer, retorna tg x, a tangente de x.
tanh(x) Para x qualquer, retorna tgh x, a tangente hiperbólica de x.

Física Computacional Prof. Salviano A. Leão


Funções Extras

column(x) Retorna um inteiro, para a coluna x durante a manipulação de dados.


def ined(X) nome da variável retorna 1 se a variável X está definida, 0 senão.
tm_hour(x) Retorna um inteiro para a hora.
tm_mday(x) Retorna um inteiro para o dia do mês.
tm_min(x) Retorna um inteiro para o minuto.
tm_mon(x) Retorna um inteiro para o mês.
tm_sec(x) Retorna um inteiro para o segundo.
tm_wday(x) Retorna um inteiro para o dia da semana.
tm_yday(x) Retorna um inteiro para o dia do ano.
tm_year(x) Retorna um inteiro para o ano.
valid(x) Retorna um inteiro para o teste validade da column(x) durante a manipulação de dados.

Física Computacional Prof. Salviano A. Leão


Função rand(x)

rand(0) Retorna um número pseudo aleatório no intervalo 0 ≤ rand(0) ≤ 1 gerado a partir do


valor corrente da semente interna de 32-bits.
rand(−1) Reinicializa ambas as sementes para um valor padrão.
rand(x) Para x > 0 inicializa ambas as sementes para um valor baseado no valor de x.
rand(x, y) Para x > 0 inicializa a semente 1 (seed1) para x e a semente 2 (seed2) para y..

Física Computacional Prof. Salviano A. Leão


Modos iterativos e batch

• Pode-se chamar uma sessão iterativa com • Pode-se fornecer os comandos para o
gnuplot diretamente da linha de comando, e
gnuplot
para isso usa-se a opção -persist"para que a
tela gráfico não seja fechada após a
• Pode-se chamar uma sessão usando dois execução do comando:
arquivo de comandos “graf1.gp” e “graf2.gp”:
gnuplot -persist -e "set title
gnuplot graf1.gp graf2.gp ֒→ 'Curva do Seno'; plot sin(x)"

• Pode-se chamar uma sessão iterativa após a • Para definir o valor das variáveis "g"e
inicialização de umas definições padrões "s"antes de executar os comandos a partir de
arquivadas no arquivo “init.gp” e seguida por um arquivo:
um outro arquivo de comandos “grafico.gp”:
gnuplot -e "g=9.8; s='fig01.png'"
gnuplot init.gp - grafico.gp ֒→ graf.gp

Física Computacional Prof. Salviano A. Leão


Modos iterativos e batch: exemplo terminal

Com o gnuplot pode-se trabalhar dentro do terminal iterativamente:

Física Computacional Prof. Salviano A. Leão


Modos iterativos e batch: exemplo terminal

Abra um terminal na pasta que contém o arquivo “test.gp” e chame o gnuplot. Já no ambiente
iterativo do gunplot, para rodar todas as instruções contidas no arquivo “test.gp” faça:

Física Computacional Prof. Salviano A. Leão


Expressões e Operadores

• Os operadores no gnuplot são os mesmos da linguagem de programação C.


• O ∗∗ operador (exponenciação) é suportado, como no FORTRAN.
• Os parenteses podem ser usados para alterar a ordem de cálculo de uma expressão.

Física Computacional Prof. Salviano A. Leão


Operadores Unitários

Símbolo Exemplo Explicação


− −a menos unário
+ +a mais unário (sem operação)
a complemento
! !a Negação lógica
! !a Fatorial
$ $3 chama argumento/coluna durante uma manipulação

Física Computacional Prof. Salviano A. Leão


Operadores Binários

Símbolo Exemplo Explicação


∗∗ a ∗ ∗b Exponenciação
∗ a∗b Multiplicação
/ a/b Divisão
% a%b Módulo∗
+ a+b Adição
− a−b Subtração
== a == b Igualdade
!= a! = b Desigualdade
< a<b Menor que
<= a <= b Menor ou igual a
> a>b Maior que
>= a >= b Maior ou igual a

Física Computacional Prof. Salviano A. Leão


Operadores Binários II

Símbolo Exemplo Explicação


<< 0xf f << 1 Deslocamento para esquerda sem sinal
>> 0xf f >> 1 Deslocamento para direita sem sinal
& a&b Bit∗ E
^ a^b Bit∗ OU exclusivo
| a|b Bit∗ OU inclusivo
&& a&&b Lógico∗ E
|| a|| Lógico∗ OU
= a=b Atribuição
, (a,b) Cálculo serial
. A.B Concatenação de strings
eq A eq B igualdade de strings
ne A ne B Desigualdade de strings

Física Computacional Prof. Salviano A. Leão


Operadores Ternários

Símbolo Exemplo Explicação


?: a?b : c Operação Ternária

Este operador comporta-se como em C.


NOTA
O operador A?B : C
Resulta em B nos casos em que a expressão A é verdadeira e C nos casos em que ela é
falsa.

Física Computacional Prof. Salviano A. Leão


Operadores Ternários: Exemplo

Considere, por exemplo, a função passo de Heaviside:

se x < 0

0
θ(x) =
1 se x > 0

passo(x) = x>0 ? 1 : 0 g(x) = x>=0 ? 1 : 1/0


plot passo(x) f(x) = x<0 ? 0 : 1/0
plot f(x), g(x)

fornece uma função contínua. Para obter a


descontinuidade deve-se fazer o gráfico

passo(x) f(x)
g(x)
1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0

-10 -5 0 5 10 -10 -5 0 5 10

Física Computacional Prof. Salviano A. Leão


Operadores Ternários: Exemplo

Considere, por exemplo, uma função tipo passo definida por:

se

 0 x<0
θf (x) = 0.5 se x=0
1 se x>0

f(x)

reset 1
g(x)

set yr[-0.1:1.1]
set grid
g(x) = x>0 ? 1 : 1/0 0.8

f(x) = x<0 ? 0 : 1/0


plot f(x), g(x), "< echo '0, 0.5'" with 0.6
֒→ points ls 6 notitle

fornece uma função contínua. Aqui usamos a


0.4

habilidade do gnuplot de ler a saída padrão 0.2

“stdout” para gerar o dado, como em


plot "< echo '1 2'". 0

Para obter a descontinuidade deve-se fazer o


gráfico -1 -0.5 0 0.5 1

Física Computacional Prof. Salviano A. Leão


Exemplo operador ternário

Para fazer o gráfico de um poço de potencial faça reset


f(x,y)=(x**3 - 2*x*y + y**3>0)?1:1/0
set xr [-1:1]; set yr [-1.1:0.1] unset colorbox
pot(x) = abs(x)>0.5 ? 0 : -1 set isosample 300, 300
plot pot(x) set xlabel 'x'
set ylabel 'y'
set sample 300
set pm3d map
splot [-2:2] [-2:2] f(x,y) t
pot(x)
0
֒→ 'x^3-2xy+y^3>0'

-0.2

-0.4

-0.6 2
x3 - 2xy + y3>0

1.5

-0.8
1

0.5
-1
0

y
-1 -0.5 0 0.5 1
-0.5

Por exemplo, a função f (x, y) = 1, se -1

x3 − 2xy + y 3 > 0, e f (x, y) = 1/0 (indefinida), -1.5

se x3 − 2xy + y 3 < 0. O gráfico dessa função é -2


-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

obtido com x

Física Computacional Prof. Salviano A. Leão


Operadores Ternários II

Considere os dois exemplos a seguir

sen (x) se

0≤x<1
g(x) =
1/x se 1≤x<2

g(x)= 0 <=x && x<1 ? sin(x):1<=x && x<2 ? 1/x: 1/0


plot g(x)

O valor 1/0 significa não definido.

Para um arquivo de dados, faça um gráfico da média dos valores das colunas 2 e 3 em função dos
dados da coluna 1, mas somente se os dados da coluna 4 forem não negativos.

plot "dados.dat" using 1:( $4<0? 1/0: ($2+$3)/2)

Física Computacional Prof. Salviano A. Leão


Exemplo do Operador Ternário

A função abaixo

se

f (x) = 3x − 40 2≤x≤6
H(x) =
g(x) = −x2 + 2x − 8 se Outros casos

reset set xtics 1; set grid


set xtics 1; set grid set xrange [0:10]
set xrange [0:10] f(x)=3*x-40
f(x)=3*x-40 g(x)=-x**2+2*x-8
g(x)=-x**2+2*x-8 h(x) = (2<=x && x<=8) ? f(x):1/0
h(x)=(2<=x && x<=8) ? f(x):g(x) y1(x) = x<2 ? g(x):1/0
y(x)=(2<=x && x<=8) ? g(x):1/0 y2(x) = x>8 ? g(x):1/0
plot h(x) t "Comp", y(x) t "Ret" y3(x) = (2<=x && x<=8) ? g(x):1/0
pause -1 "Fechar ?" plot h(x) lt 7 t "Reta", y1(x) lt 1
֒→ notitle,\
y2(x) lt 1 t "Parabola", y3(x) lt
֒→ 2 notitle
0
Comp.
Ret.

-10

0
-20 Reta
Parabola

-10
-30

-20
-40

-30
-50

-40
-60

-50
-70

-60
-80

-70
-90
0 1 2 3 4 5 6 7 8 9 10

-80

-90
0 1 2 3 4 5 6 7 8 9 10

Física Computacional Prof. Salviano A. Leão


Definindo Funções

No ambiente pode-se definir uma função reset


set grid
reset set autoscale
set grid set zeroaxis
set autoscale a=0; b=-2 ; c=3
set zeroaxis f(x,a)=a*x**2+b*x+c
a=1 ; b=-2 ; c=3 set xr[-5:5]
f(x)=a*x**2+b*x+c plot for [a=1:10:1] f(x,a+0.2) notitle
plot f(x)

300
140
f(x)

250
120

100 200

80
150

60

100

40

50

20

0
0 -4 -2 0 2 4
-10 -5 0 5 10

Física Computacional Prof. Salviano A. Leão


Definindo Funções

No ambiente pode-se definir uma função reset


set grid
reset set autoscale
set grid set zeroaxis
set autoscale a=0; b=0; c=3
set zeroaxis f(x,a)=a*x**2+b*x+c
a=1; b=0 ; c=3 set xr[-5:5]
f(x,a)=a*x**2+b*x+c plot for [n=1:10:1] f(x,a+0.2*n)
set xr[-5:5] ֒→ notitle
plot for [c=0:10:1] f(x,1) notitle

35 55

50

30
45

40
25

35

20
30

25
15

20

10
15

10
5

0 0
-4 -2 0 2 4 -4 -2 0 2 4

Física Computacional Prof. Salviano A. Leão


1

No ambiente pode-se definir uma função f(x)=sin(x*a), a=0.2, f(x)


a=0.4, f(x)


w = 2


q = floor( tan( pi/2 - 0.1))


f(x) = sin(w*x)
sinc(x) = sin(pi*x)/(pi*x)


delta(t) = (t == 0) 0

ramp(t) = (t > 0) ? t : 0
min(a,b) = (a < b) ? a : b

-

comb(n,k) = n!/(k!*(n-k)!)
len3d(x,y,z) = sqrt(x*x+y*y+z*z)

-

set key top left

-

plot f(x)=sin(x*a), a=0.2, f(x) lw 2,
֒→ a=0.4, f(x) lw 2

-

-1
-10 -5 0 5 10

Física Computacional Prof. Salviano A. Leão


Controle de Eixos e Escalas

• set grid ativa a grade.


• set nogrid ou unset grid desativa a grade.
• set xrange [x0:xf] define o intervalo de variação de x no intervalo x0 ≤ x ≤ xf .
• set yrange [y0:yf] define o intervalo de variação de y no intervalo y0 ≤ y ≤ yf .
• set zrange [z0:zf] define o intervalo de variação de z (z0 ≤ z ≤ zf ) em graficos (3D).
• set samples n define o número de pontos n usados para fazer o gráfico.
• replot f(x) ou rep f(x) adiciona o gráfico de f (x) ao anterior.
• test mostra as definições padrões.
• reset reinicializa as variáveis internas aos valores padrões.
• clear limpa a tela.

Física Computacional Prof. Salviano A. Leão


Física Computacional
O comando test

g q
gnuplot> test

ro"#"$% &$'(")$% "$*"




9 r  
;:  m
= <: 
r+

> ,. 

 ? ,/ 
 A@ 0

i B 2  
= 3
 < 4

C
t
5 s
6 
0
/8 
3

     
1    s 
No gnuplot o comando “test”

i



d





g 
1 

 
i i i i i   
        
1    s s 
mostra todos os estilos e tamanhos possíveis.

 t  
7  

 ! 
 

 i 
  
1  e
  i
E   

 


0
 s x
t
 i  

7
  
 

1
 
!
i  
i
te

2


3
 !

 
 x i

4

n 
0

 
Bold

!  d

ll
g

5



Italic

 

    1 1 1 1
  7    7    7 
31
30
25
24
23
22
21
20
15
14
13
12
11
10
-1

5
4
3
2
1
0

Prof. Salviano A. Leão


Tipos de curvas

set key at -1, 0.9 Note que o gnuplot aceita abreviações dos
plot sin(x) with lines title 'linha',\ comandos assim:
sin(x/2) with points title
֒→ 'pontos',\ plot sin(x/2) w p
sin(x/3) with linespoints title plot sin(x/2) w l
֒→ 'linha+ponto',\ plot sin(x/2) w lp
sin(x/4) with dots lw 4 title plot sin(x/2) w d
֒→ 'pontilhada',\ plot sin(x/2) w i
sin(x/5) with impulses title
֒→ 'impulsos'
Temos ainda os seguinte comandos:
linewith ou lw define a largura da linha.
1
lLM
NO
pP
MQ
PR
FG
H

linetype ou lt define um dos tipos


lLM
N
SO
pP
MQ
P
pP
MQ
LlN
TOO
UL
Vp lR
PR
I
FG

pré-definidos da linha.
J
FG

pointsize ou ps define o tamanho do ponto.


K
FG

0
GK
DF
GJ
DF
GI
DF
DF
GH

-1
-4 -2 0 2 4

Física Computacional Prof. Salviano A. Leão


Comando replot

set key at -1, 0.9

^_`
ab
plot sin(x) with lines lt 7 title

c
`fh
fj
XY
Z

k
c
`fh
f
^_`
ab
֒→ 'linha ',\

c
`fh
_^a
br
b
vc
^j
fj
_u

w
XY
[
sin(x/2) with points ps 3 lt 2

vc
^j
fj
_u

]
֒→ title 'pontos',\

XY
\
sin(x/3) with linespoints ps 2

XY
]
֒→ lt 1 title 'linha+ponto',\
sin(x/4) with dots lt 8 lw 4 0

֒→ title 'pontilhada',\
sin(x/5) with impulses lt 3

WX
Y]
֒→ title 'impulsos 1'

WX
Y\
replot sin(x/6) with impulses lw 3 lt 5
֒→ title 'impulsos 2'

WX
Y[
WX
YZ
-1
-4 -2 0 2 4

Física Computacional Prof. Salviano A. Leão


Exemplo de rótulos

set xrange [-2*pi:2*pi]

€
‚ƒ


…
f(x,b)=sin(x/b)

€
‚ƒ

†
…
€
‚ƒ

‡
…
z{
|
plot f(x,2)

€
‚ƒ

ˆ
…
€
‚ƒ

‰
…
€
‚ƒ

Š
…
€
‚ƒ

‹
…
set xrange [-2*pi:2*pi]

€
‚ƒ

Œ
…
€
‚ƒ


…
f(x)=sin(x*a)

€
‚ƒ

z|„
…
plot f(x), a=0.5

~
|{
|
set xrange [-2*pi:2*pi]
f(x,a)=sin(a*x)
plot f(x,0.5)

yz
{|
set key at -1.0,1.3
set xlabel '{/Helvetica-Oblique x}' -2 - 0 2

}
set ylabel '{/Helvetica-Oblique y}'


titulo(n) =
֒→ sprintf("sen({/Helvetica-Oblique
֒→ x/%d})", n)
set xrange[-2*pi:2*pi]
set yrange[-1.5:1.5]
set xtics ('-2{/Symbol p}' -2*pi,
֒→ '-{/Symbol p}' -pi, 0, '{/Symbol
֒→ p}' pi, '2{/Symbol p}' 2*pi)
set ytics 1
set ytics format "%3.1f"
set tics scale 0.75
set zeroaxis
f(x,n) = sin(x/n)
plot for [n=1:10:1] f(x,n) title
֒→ titulo(n)

Física Computacional Prof. Salviano A. Leão


Criando um arquivo de dados

reset arquivo especial é que ao invocar ele, pode-se


# Número de pontos a ser usado usar os modificadores de plot padrão mesmo
set samples 200
# Define-se uma gaussiana
com funções. Ou seja, podemos especificar
f(x,a) = “using” para uma função. A importância disso é
֒→ exp(-(x-a)*(x-a)/(1+a*0.5))+0.05*rand(0) que muitos estilos de plot requerem várias
titulo(n) = sprintf("coluna %d", n)
# Aqui define-se o nome do arquivo
colunas, e não podíamos usar esses estilos de
set table 'iter.dat' plot com funções sem o pseudo-arquivo ’+’.
plot [0:20] '+' using
֒→ (f($1,1)):(f($1,2)):\

Ž
1

’“
”•
–—
(f($1,3)):(f($1,4)):(f($1,5)):(f($1,6)) 2

’“
”•
–—
3

’“
”•
–—
֒→ w xyerror 14 4

’“
”•
–—
5

’“
”•
–—
unset table

’“
”•
–—
Ž
# Fim da geração do arquivo 12

set yrange [0:16]


plot for [i=1:6] 'iter.dat' u 10

֒→ 0:(column(i)+2*i) w l lw 1.5 t
֒→ titulo(i)


Ž
O arquivo, ’iter.dat’ é gerado com 6 parâmetros
diferente, de modo que a gaussiana seja 4

deslocada e se alargue. Note, que isso é feito 2

com o plot para um arquivo especial, ’+’. Isto foi


introduzido no gnuplot 4.4 e a finalidade deste 0
0 20 40 100 120 140 200

Ž‘

‘

Ž
‘


‘
Física Computacional Prof. Salviano A. Leão
Usando o nome do arquivo especial "+", que 1. Pode-se usar o tipo de ponto usual.
gera um conjunto de coordenadas, que são
filtradas e o gráfico é feito usando o estilo de plot 2. Só se pode usar os valores dos eixos como
dos rótulos (ou pontos se nenhuma etiqueta for coordenadas (como primeiro ou segundo
solicitada: para os objetos acima).

reset 3. Pode tornar-se mais difícil colocar diferentes


f(x) = x**2 tipos de pontos.
x1 = 2
4. É mais envolvido usando diferentes cores de
set xrange[-5:5]
set style line 1 pointtype 7 linecolor borda e de preenchimento.
֒→ rgb '#22aa22' pointsize 2
plot f(x) lw 2, \ 25

'+' using ($0 == 0 ? x1 : f(x)

֒→ NaN):(f(x1)):(sprintf('f(%.1f)',
֒→ x1)) \
20
with labels offset char 1,-0.2
֒→ left textcolor rgb 'blue' \
point linestyle 1 notitle
15

O $0, ou equivalentemente column(0), é o índice


de coordenadas. Na declaração de uso, apenas 10

o primeiro é considerado válido, todos os outros


são ignorados (usando NaN). 5

Observe que usar "+" requer a configuração de f(2.0)

um xrange fixo.
Isso tem as vantagens (ou desvantagens?): 0
-4 -2 0 2 4

Física Computacional Prof. Salviano A. Leão


O gráfico anterior também pode ser obtido com reset
unset colorbox
unset key
set xrange [0:10]
set cbrange [0:1]
plot '+' using
֒→ ($1):(sin($1)):(0.6*(1.0+sin($1)))
reset ֒→ with lines lw 3 lc palette, \
f(x) = x**2 '+' using
x1 = 2 ֒→ ($1):(sin($1)+2):($1/8.0) with
֒→ lines lw 3 lc palette, \
set xrange[-5:5] '+' using
set style line 1 pointtype 7 linecolor ֒→ ($1):(sin($1)+4):(2*exp(-$1/4))
֒→ rgb '#22aa22' pointsize 2 ֒→ with lines lw 3 lc palette
plot f(x) lw 2
replot "-" using 1:(f($1))
2.0
5
e
with labels offset char 1,-0.2
֒→ left textcolor rgb 'blue' \ 4

point linestyle 1 notitle

Pode-se fazer um gradiente com: 1

-1
0 2 4 6 8 10

Física Computacional Prof. Salviano A. Leão


Gradiente com curvas

reset
unset colorbox

š
›
unset key
set obj 1 rectangle behind from screen 2

֒→ 0,0 to screen 1,1


set obj 1 fillstyle solid 1.0 fillcolor

œš
›
֒→ rgbcolor "#cce5ff"
set xrange [0:10] 1

set cbrange [0:1]


f(x,dx) = dx + sin(x)

™š
›
p(x,n) = 0.6*(1.0+sin(n*x))
0
n=21
dx=0.1
a=0.0

˜™
š›
plot for [i=1:n] '+' using -1
֒→ ($1):(f($1,a+(i-1)*dx)):(p($1,2)) 0 2 4 6 8 10

֒→ with lines lw 3 lc palette

Física Computacional Prof. Salviano A. Leão


reset set print "iter2.dat" append
f(x,a) = print 100.5, 0.013, 0.038, 0.015,
֒→ exp(-(x-a)*(x-a)/(1+a*0.5))+0.05*rand(0) ֒→ 0.010, 0.034, 0.018
titulo(n) = sprintf("coluna %d", n) set print
x0=0.0
xf=100.0
n=201
dx=(xf-x0)/(n-1) 16

set print "iter2.dat"

žŸ
 ¡
¢£
¤
2

žŸ
 ¡
¢£
do for [i = 1:n] {

¥
žŸ
 ¡
¢£
14 4

žŸ
 ¡
¢£
x = x0+(i-1)*dx

žŸ
 ¡
¢£
¦
6

žŸ
 ¡
¢£
print x, f(x,1), f(x,2), f(x,3), 12

֒→ f(x,4), f(x,5), f(x,6)


} 10

set print
set yrange [0:16] 8

plot for [i=2:7] 'iter2.dat' u


֒→ 1:(2*column(i)+2*(i-1)) w l lw 1.5 6

֒→ t titulo(i-1)
4

Ao fechar um arquivo, se desejar adicionar mais 2

algum dado use o flag “append” da seguinte


forma: 0
0 20 40 60 80 100

Física Computacional Prof. Salviano A. Leão


Gerando rede: início

reset # X Y
# Definição das cores 1 2
set border linewidth 1.5 2 3
set style line 1 lc rgb '#0060ad' pt 7 3 2
֒→ ps 2 lt 1 lw 2 # --- blue 4 1

unset key
4
# Eixos
set style line 11 lc rgb '#808080' lt 1
set border 3 back ls 11

¬
©
set tics nomirror out scale 0.75
3
# Grid
set style line 12 lc rgb'#808080' lt 0
lw 1

Ǭ
©
֒→
set grid back ls 12
2

set xrange [0:5]


set yrange [0:4]

ª
©¨
1
plot 'dados_01.txt' w p ls 1

§¨
Considere o arquivo de dados “dados_01.txt”, ©

dado por:
0

0 1 2 3 4 5

Física Computacional Prof. Salviano A. Leão


Gerando rede: início

reset Considere o arquivo de dados “dados_02.txt”,


# Definição das cores dado por:
set border linewidth 1.5
set style line 1 lc rgb '#0060ad' pt 7
֒→ ps 2 lt 1 lw 2 # --- blue # dados_02.txt
set style line 2 lc rgb '#949599' lt 1 # deltaX deltaY
֒→ lw 2 # --- grey 1 2
1 1
unset key 1 -1
1 -1
# Eixos
set style line 11 lc rgb '#808080' lt 1
set border 3 back ls 11 4
set tics nomirror out scale 0.75
# Grid

²®
¯
set style line 12 lc rgb'#808080' lt 0
֒→ lw 1 3
set grid back ls 12

±
¯®
set xrange [0:5]
set yrange [0:4] 2

# define o ponto de partida


°
x=0.; y=0. ¯®

a=0; b=0 1
plot 'dados_02.txt' u (x=x+$1):(y=y+$2)
֒→ w steps ls 2,\
­®
¯

'' u (a=a+$1):(b=b+$2)
֒→ w points ls 1 0
0 1 2 3 4 5

Física Computacional Prof. Salviano A. Leão


Gerando rede: início

Usando o último código, mas considerando


agora o o arquivo de dados “dados_03.txt”, dado

¸´
µ
por: 3

# dados_03.txt

·
µ´
# deltaX deltaY
1. 2. 2

1. 0.
0. 1.


µ´
1. 0.
0. -1. 1

1. 0.
0. -1.

³´
µ
-3. 0.
0. 1. 0
0 1 2 3 4 5

Física Computacional Prof. Salviano A. Leão


Gerando rede

reset # define o ponto de partida


# Definição das cores x=1; y=2
set border linewidth 1.5 a=1; b=2
set style line 1 lc rgb '#0060ad' pt 7 plot 'rand.dat' u (x=x+$1):(y=y+$2) w
֒→ ps 2 lt 1 lw 2 # --- blue ֒→ steps ls 2,\
set style line 2 lc rgb '#949599' lt 1 '' u (a=a+$1):(b=b+$2) w
֒→ lw 2 # --- grey ֒→ points ls 1
unset key
# Eixos
set style line 11 lc rgb '#808080' lt 1 4

set border 3 back ls 11


set tics nomirror out scale 0.75
3
# Grid
set style line 12 lc rgb'#808080' lt 0
֒→ lw 1 2

set grid back ls 12


1

n=40 # Tamamho da rede


# Gera arquivo de dados 0

set print "rand.dat"


do for [i = 1:n] {
-1
x = sgn(-0.50+rand(0))
a = int(10*rand(0))
if (a == 0 ) { x=0} else { x = -2

֒→ x*(a/a)}
y = sgn(-0.50+rand(0)) -3

a = int(10*rand(0)) -10 -8 -6 -4 -2 0

if (a == 0 ) { y=0} else { y =
֒→ y*(a/a)}
print x, y
}
set print

Física Computacional Prof. Salviano A. Leão


Usando colunas

reset
plot "iter.dat" using 1:2

reset
plot "iter.dat" using ($1): ($2)

reset
plot "iter.dat" using ($1):($2) with lines lt 3 lw 6

Outras opções:
• using ($1):(($2 +$3)/2)
• using ($1):($2 +3*($3))
• using ($2):($5)/100
• using ($4):($2 * sin($1))/100

Física Computacional Prof. Salviano A. Leão


Curvas preenchidas

O estilo filledcurves só é relevante para gráficos 2D. Há três possíveis variantes:


• Primeira, é necessário uma função ou um arquivo de dados com duas colunas, e os resultados
podem ser modificados pelas opções do comando cuja sintaxe é:
plot ... with filledcurves [opcoes]
na qual as opções podem ser:
[closed | above | below | x1 | x2 | y | r[=<a>] | xy=<x>,<y>]

• Segunda, é para preencher a área entre as curvas e um dado eixo, seja um horizontal ou vertical
ou um ponto.
filledcurves closed preenche uma curva fechada.
filledcurves x1 eixo x1.
filledcurves x2 eixo x2.
filledcurves y=10 linha em y = 10, paralela ao eixo x.
filledcurves xy=2,4 ponto (2, 4) dos eixos x1, y1 (na forma de um arco).
filledcurves above r=2.5 em um plot polar, a área externa o círculo de raio 2.5.

• Terceira, é necessário um arquivo de dados com três colunas: uma coordenada x e as duas
coordenadas y correspondendo as duas curvas. A área entre as curvas é preenchida. A forma
do arquivo é
x y1 y2
Física Computacional Prof. Salviano A. Leão
Curvas preenchidas: Exemplos

reset resultado desejado.


f(x)=0.5*x**2-2
g(x)=-0.5*x**2+2 20
f(x)
xl=6

¹º
»¼
set xrange [-xl:xl] 15

plot [-xl:xl] f(x) w l lw 2 lt 6


֒→ notitle,\ 10

[-xl:xl] g(x) w l lw 2 lt 7
֒→ notitle,\ 5

[-2:2] '+' using 1:(f($1)):(g($1))


֒→ lt 2 with filledcurves closed 0

֒→ notitle,\
f(x) w l lw 2 lt 6,\ -5

g(x) w l lw 2 lt 7
-10

Note que para uma função o gnuplot não -15

preenche a curva entre duas funções. Por isso,


usa-se o arquivo especial "+" para se obter o -20
-6 -4 -2 0 2 4 6

Física Computacional Prof. Salviano A. Leão


Curvas preenchidas: Exemplos

reset • RGB colors


f(x)=x**2
g(x)=0.5*x**2+2 • 500+ Colors
x0=4
set xrange [-x0:x0] • HTML Color Names
set yrange [-1:16]
plot [-x0:x0] [-1:16] -x0 with
֒→ filledcurve x2 lt rgb '#99ff99', \
[-x0:x0] f(x) w l lw 2 lt 6 16

½¾
¿
֒→ notitle,\ f(x)

¾
ÀÁ
[-x0:x0] g(x) w l lw 2 lt 7 14

֒→ notitle,\
12
[-2:2] '+' using 1:(f($1)):(g($1))
֒→ lt 5 with filledcurves closed
10
֒→ notitle,\
f(x) w l lw 2 lt 6,\ 8
g(x) w l lw 2 lt 7
6

Para achar o código hexadecimal use o software 4

agave, ou consulte por exemplo:


2

• Gnuplot colors
0

• Table of colors -4 -3 -2 -1 0 1 2 3 4

Física Computacional Prof. Salviano A. Leão


Curvas preenchidas: Exemplos símbolo da band

reset set output


#Define o nome de saída set terminal pop
Nome='simb_band' !inkscape -E ../simb_band.eps
set term push ֒→ simb_band.svg
set terminal svg size 800,800 enhanced
֒→ fname 'Verdana,14' linewidth 2
֒→ background '#ffffff'
set output sprintf('%s.svg', Nome) -2
#Ajusta as dimensões do gráfico
set size square
f(x)=0.5*x**2-2
g(x)=-0.5*x**2+2
r(x,R)= sqrt(R**2 -x**2)
set samples 801
# remove as bordas do gráfico
unset border
# remove os tics e os números
unset tics
re=1.0; ri=0.5; L=2.0
plot [-L:L] -2 with filledcurve x2 lt
֒→ rgb '#99ff99',\
[-L:L] '+' using 1:(f($1)):(g($1))
֒→ lt rgb '#ffff33' with filledcurves
֒→ closed notitle,\
[-re:re] '+' using
֒→ 1:(r($1,re)):(-r($1,re)) lt rgb
֒→ '#ffffff' with filledcurves closed
֒→ notitle,\
[-ri:ri] '+' using
֒→ 1:(r($1,ri)):(-r($1,ri)) lt rgb
֒→ '#66ff00' with filledcurves closed
֒→ notitle

Física Computacional Prof. Salviano A. Leão


Exemplo com arquivo 1/2

Considere o arquivo "artigos.dat" plot \


"artigos.dat" using
֒→ 1:($2+$3+$4+$5+$6) title
Date,Bloomberg,Yahoo,MSN,Google,DowJones ֒→ 'Bloomberg' with filledcurves x1,
2013-09-01, 3, 5, 12, 14, 3 ֒→ \
2013-09-02, 5, 6, 12, 15, 6 "artigos.dat" using 1:($3+$4+$5+$6)
2013-09-03, 2, 4, 16, 12, 4 ֒→ title 'Yahoo' with filledcurves
2013-09-04, 1, 3, 18, 11, 3 ֒→ x1, \
2013-09-05, 3, 4, 15, 13, 6 "artigos.dat" using 1:($4+$5+$6)
2013-09-06, 7, 3, 12, 21, 9 ֒→ title 'MSN' with filledcurves x1,
2013-09-07, 5, 4, 11, 18, 8 ֒→ \
"artigos.dat" using 1:($5+$6) title
֒→ 'Google' with filledcurves x1, \
"artigos.dat" using 1:($6) title
֒→ 'DowJones' with filledcurves x1
reset
set terminal qt enhanced
set title "Artigos Importados"
set xdata time Artigos Importados

set timefmt "%Y-%m-%d" 60

set datafile separator ","


set ylabel "Artigos" 50

set xlabel "Data"


40
set xrange ["2013-09-01":"2013-09-07"]
set yrange [0:10<*]
Artigos

30
set pointsize 0.8
set format x "%d/%m"
20
set border 11
unset x2tics
10
set xtics out nomirror
set key below
0

01/09 02/09 03/09 04/09 05/09 06/09 07/09

Data
Bloomberg MSN DowJones
Yahoo Google

Física Computacional Prof. Salviano A. Leão


Exemplo com arquivo 2/2

reset Artigos Importados


set terminal qt enhanced 60
set title "{/=16 Artigos Importados}" 50
set xdata time 40

Artigos
set timefmt "%Y-%m-%d"
30
set datafile separator ","
set ylabel "Artigos" 20

set xlabel "Data" 10


set xrange ["2013-09-01":"2013-09-07"] 0
set yrange [0:10<*] 01/09 02/09 03/09 04/09 05/09 06/09 07/09
set pointsize 0.8 Data
set format x "%d/%m" Bloomberg MSN DowJones
Yahoo Google
set border 11
unset x2tics
set xtics out nomirror
set key below
plot \
for [i=2:6:1] \
"artigos.dat" using 1:(sum[col=i:6]
֒→ column(col)) \
title columnheader(i) with
֒→ filledcurves x1,\
for [j=2:6:1] \
"artigos.dat" using 1:(sum[col=j:6]
֒→ column(col)) notitle \
with lines lc rgb "#000000" lt -1
֒→ lw 2

Física Computacional Prof. Salviano A. Leão


Curvas preenchidas: Outros Exemplos

Este é um estilo disponível somente para dados.

plot "dados.dat" u 1:2:3 with filledcurves


plot -cos(x)/(1+0.1*x**2) w filledc y1=0
plot -cos(x)/(1+0.1*x**2) w filledc y1=0.2
plot -cos(x)/(1+0.1*x**2) w filledc above y1=0
# Aqui mostra-se uma quebra de linha
plot 0.5*cos(x)+1.25 w filledc above y1=1.5, \
0.5*cos(x)+1.25 w filledc below y1=1.0
plot 1/cosh(x) +2, 1/cosh(x)+2 < 2.6 ? 1/cosh(x)+2 : 2.6 w filledc above y1=2.4

Física Computacional Prof. Salviano A. Leão


Mais Controles Sobre os Eixos

• set xtics ∆x. Aqui ∆x é o valor do intervalo de pontos no eixo x.


• set mxtics n número de divisões no intervalo de pontos ∆x do eixo x.
• set ytics ∆y Valor do intervalo de pontos no eixo y.
• set mytics n número de divisões no intervalo de pontos ∆y do eixo y.
• set xlabel ”Nome do eixo x”
• set ylabel ”Nome do eixo y”
• set title ”Nome do gráfico”

Física Computacional Prof. Salviano A. Leão


Modo de texto “enhanced”

Muitos tipos de terminal suportam o modo de texto “enhanced” no qual informações de formatação
adicionais estão incorporadas na cadeia de texto. Por exemplo, "x^2"escreverá x2 . Este modo é
selecionado por padrão quando você configura o terminal, mas pode ser alternado depois usando

set termoption [no] enhanced

ou sendo explicito como em

set label 'x_2' noenhanced

Códigos de controle do modo texto enhanced


Controle Exemplo Resultado Explicação
^ a^x a x
Sobrescrito
_ a_x ax Subescrito
@ a@^b_{cd} acdb
Caixa fantasma ocupando a largura
& d&{space} d b Insere espaços fantasma de tamanho específico
~ ~a{.8-} ā Imprime ’-’ sobre ’a’, aumentado por .8 vezes
{/Times abc} abc Imprime abc com a fonte times
{/Times*2 abc} abc Imprime abc com a fonte times com duas vezes o seu tamanho
{/Times:Italic abc} abc Imprime abc com a fonte times com o estilo itálico
{/Arial:Bold=20 abc} abc Imprime abc com a fonte arial negrita com tamanho 20
{/Symbol abc} αβχ Usa a fonte para símbolos
{/= } {/= 20 A } A Seleciona uma fonte em tamanhos absolutos

Física Computacional Prof. Salviano A. Leão


reset
set grid
set xtics 2
set mxtics 2
set ytics 40
set mytics 2
set xrange [0:25]
TITLE = "Função Parabólica \n Teste 1"
set title TITLE offset char 0, char -1
set xlabel "X - Tempo (s)"
set ylabel "Y- Aceleração (m/s2)"
f(x,a,b,c)=a+b*x+c*x**2
plot f(x,120,-5,0.1) t "função 1" with points 3 5
rep f(x,80,+10,-0.15) t "função 2" with lines 8

Física Computacional Prof. Salviano A. Leão


Posicionamento das Legendas

• set key left bottom Canto inferior esquerdo.


• set key right bottom Canto inferior direito.
• set key left top Canto superior esquerdo.
• set key right top Canto superior direito.

Física Computacional Prof. Salviano A. Leão


Comando set arrow

Uma seta pode ser colocada arbitrariamente em • <tag> é um inteiro que identifica a seta. Se
um gráfico como comando set arrow. A sua nenhuma tag for fornecida, o menor valor não
sintaxe é a seguinte utilizado de tag será atribuído
automaticamente. A tag pode ser usada para
set arrow {<tag>} from <position> to excluir ou alterar uma seta específica. Para
֒→ <position> alterar qualquer atributo de uma seta
set arrow {<tag>} from <position> rto
֒→ <position> existente, use o comando set arrow com a
set arrow {<tag>} from <position> tag apropriada e especifique as partes da
֒→ length <coord> angle <ang> seta a serem alteradas.
set arrow <tag> arrowstyle | as
֒→ <arrow_style> A posição da primeira extremidade da seta é
set arrow <tag> {nohead | head | sempre especificada por "de". O outro ponto
֒→ backhead | heads} final pode ser especificado usando qualquer
{size
֒→ <headlength>,<headangle>{,<backangle>}} um dos três mecanismos diferentes. Os
{filled | empty | <position> são especificados por x, y ou x,
֒→ nofilled | noborder}
{front | back}
y, z, e podem ser precedidos por primeiro,
{linestyle segundo, gráfico, tela ou caractere para
֒→ <line_style>} selecionar o sistema de coordenadas.
{linetype <line_type>}
֒→ {linewidth <line_width>}
Quando a coordenadas não é especificadas
o padrão é 0. Um especificador de sistema
unset arrow {<tag>} de coordenadas não vai da primeira
show arrow {<tag>}
descrição de ponto para a extremidade no
segundo.

Física Computacional Prof. Salviano A. Leão


1. "to <position>"especifica as coordenadas absolutas da outra extremidade.
2. 2) "rto <position>"especifica um deslocamento para a posição "from". Para eixos lineares,
coordenadas de gráficos e telas, a distância entre o ponto inicial e o ponto final correspondente à
coordenada relativa dada. Para eixos logarítmicos, a coordenada dada relativa corresponde ao
fator de coordenada entre o ponto inicial e final. Assim, um valor relativo negativo ou zero não é
permitido para eixos logarítmicos.
3. 3) "comprimento <coordenada> ângulo <ângulo>
4. "especifica a orientação da seta no plano do gráfico. Novamente, qualquer um dos sistemas de
coordenadas pode ser usado para especificar o comprimento. O ângulo está sempre em graus.

Outras características da seta podem ser especificadas como uma seta predefinida ou fornecendo-as
no comando set arrow. Para uma explicação detalhada das características da seta, veja arrowstyle.

Física Computacional Prof. Salviano A. Leão


Exemplos

Para definir uma seta apontando da origem para Para desenhar uma linha vertical da parte
(1,2) com o estilo de linha 5 definido pelo inferior até o topo do gráfico em x = 3, use:
usuário, use:
set arrow from 3, graph 0 to 3, graph 1
set arrow to 1,2 ls 5 ֒→ nohead

Para definir uma seta da parte inferior esquerda Para desenhar uma seta vertical terminando
da área de plotagem para (-5,5,3) e identificar a com a forma-T use
seta com o número 3, use:
set arrow 3 from 0,-5 to 0,5 heads size
set arrow 3 from graph 0,0 to -5,5,3 ֒→ screen 0.1,90

Para alterar a seta anterior para terminar em Para desenhar uma seta relativamente ao ponto
1,1,1, sem uma ponta de seta e com o dobro de inicial, onde as distâncias relativas são dadas
sua largura, use: nas coordenadas do gráfico, use:

set arrow 3 to 1,1,1 nohead lw 2 set arrow from 0,-5 rto graph 0.1,0.1

Física Computacional Prof. Salviano A. Leão


Multiplot 1/4

reset set output


Nome='multiplot_01' set terminal pop
set term push !inkscape -E ../multiplot_01.eps
set terminal svg size 800,800 enhanced ֒→ multiplot_01.svg
֒→ fname 'Verdana,14' linewidth 2
֒→ background '#ffff99' Derivadas do Sen(x)
set output sprintf('%s.svg', Nome)
sin(x) sin'(x) = cos(x)
set xrange [-pi:pi]; unset key 1 1
set multiplot layout 2,2 title 0.8 0.8

֒→ "Derivadas do Sen(x)" font 0.6 0.6

֒→ "Times-Roman, 22" 0.4 0.4


0.2 0.2
set style arrow 1 head filled size 0 0
֒→ screen 0.03,15,135 lt 2 lw 2 -0.2 -0.2

set arrow 1 from screen .45, .82 to -0.4 -0.4


-0.6 -0.6
֒→ screen .65, .82 arrowstyle 1 -0.8 -0.8
set arrow 2 from screen .87, .64 to -1 -1

֒→ screen .87, .3 arrowstyle 1 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3

set arrow 3 from screen .7, .14 to sin'''(x) = cos''(x) = -sin'(x) = -cos(x) sin''(x) = cos'(x) = -sin(x)
֒→ screen .4, .14 arrowstyle 1 1 1

set arrow 4 from screen .35, .35 to 0.8 0.8


0.6 0.6
֒→ screen .35, .7 arrowstyle 1
0.4 0.4
set title "sin(x)" 0.2 0.2
plot sin(x) 0 0

set title "sin\'(x) = cos(x)" -0.2 -0.2


-0.4 -0.4
plot cos(x) -0.6 -0.6
set title "sin\'\'\'(x) = cos\'\'(x) = -0.8 -0.8

֒→ -sin\'(x) = -cos(x)" -1 -1
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
plot -cos(x)
set title "sin\'\'(x) = cos\'(x) =
֒→ -sin(x)"
plot -sin(x)
unset multiplot

Física Computacional Prof. Salviano A. Leão


Multiplot 2/4

reset
Nome='multiplot_02'
set term push
set terminal svg size 800,800 enhanced
֒→ fname 'Verdana,14' linewidth 2
֒→ background '#ffffff'
set output sprintf('%s.svg', Nome)
unset border
set multiplot
unset key
unset tics
unset raxis
set polar
set size 1, .5
plot [pi:2*pi] 1 lw 5, 0.2 with
֒→ filledcurves lt 4
set origin 0, .5
set size .5, .5
plot 1 lw 2, .2 with filledcurves
set origin .5, .5
plot 1 lw 2, .2 with filledcurves
unset multiplot
set output
set terminal pop
!inkscape -E ../multiplot_02.eps
֒→ multiplot_02.svg

Física Computacional Prof. Salviano A. Leão


Multiplot 3/4

reset set term push


Nome='multiplot_03' set terminal postscript eps enhanced
load "salva_eps.gp" ֒→ color font 'Arial,14' linewidth 2
set xrange[0:4*pi] ֒→ background '#ffffff'
set zeroaxis set output sprintf('../%s.eps', Nome)
set multiplot
plot sin(x)*exp(-0.25*x) lw 2,
֒→ exp(-x/4) lw 2
1
set origin 0.5,0.5 sin(x)*exp(-0.25*x)
exp(-x/4)
set size 0.4,0.4 1
0.8 0.8 sin(x)
clear 0.6
0.4
plot sin(x) 0.2
0.6 0
unset multiplot -0.2
-0.4
set output -0.6
0.4 -0.8
set terminal pop -1
0 2 4 6 8 10 12

0.2

O Arquivo "salva_eps.gp" é -0.2

-0.4
0 2 4 6 8 10 12

Física Computacional Prof. Salviano A. Leão


Multiplot 4/4

reset plot h*c/x w l lc rgb "#880000",


Nome='multiplot_04' ֒→ -1000*h*c/x/x axes x1y2 w l lc rgb
load "salva_eps.gp" ֒→ "#008800"
h=4.136e-15 # eV s
hbar=6.57e-16 # eV s unset grid
c=3e17 # nm/s set xlabel " "
set xtics format " "
set multiplot set x2tics format " "
unset key set x2label " "
set xlabel '{/Symbol l} [nm]' tc rgb set ylabel " "
֒→ "#0000ff" set y2label " "
set x2label 'Temperature [K]' set grid x2tics lt 0 lw 1 lc rgb
set ylabel 'Energia [eV]' tc rgb ֒→ "#000000"
֒→ "#880000" plot 1/0
set y2label 'dE/d{/Symbol l} [meV/nm]'
֒→ tc rgb "#008800" unset grid
set xrange [200:2000] set grid ytics lt 0 lw 1 lc rgb
set x2range [0:10] ; set yrange [0:6] ֒→ "#880000"
set y2range [1:-7] ; set y2tics 1,-1,-7 plot 1/0
set ytics nomirror tc rgb "#880000"
set y2tics tc rgb "#008800" unset grid
set xtics nomirror tc rgb "#0000ff" set grid y2tics lt 0 lw 1 lc rgb
set x2tics ֒→ "#008800"
set mxtics 2 ; set mytics 2 plot 1/0
set grid xtics lt 0 lw 1 lc rgb
֒→ "#0000ff" unset multiplot
set output
set terminal pop

Física Computacional Prof. Salviano A. Leão


Gráfico do Multiplot 4/4

Temperatura [K]
0 2 4 6 8 10
6 -7

-6
5

-5

4
-4

dE/dλ [meV/nm]
Energia [eV]

3 -3

-2
2

-1

1
0

0 1
200 400 600 800 1000 1200 1400 1600 1800 2000
λ [nm]

Física Computacional Prof. Salviano A. Leão


Gráficos com fundo colorido
#!/usr/bin/gnuplot -persist plot 'filledbg.tab' w image t '', \
# Exemplo do blog Gnuplot tricks 'filled.tab' u 0:1:2 w filledcurve
# https://gnuplot-tricks.blogspot.com/ ֒→ above lt 1 lc rgb "#467F1E" t '',
# nome: curva_preenchida_06.gp ֒→ \
reset '' u 0:1:2 w filledcurve below lt 1
Nome='background_01' ֒→ lc rgb "#802020" t '', \
set term push '' u 0:1 w l lt 8 lw 1 t 'First', ''
# Gera um background com gradiente ֒→ u 0:2 w l lt 9 lw 1 t 'Second'
f(x) = x+20
g(x) = x*x*x-2.0*x*x+x+10-x*x*x*x*0.01 set terminal epscairo enhanced color
ruido(x) = x*(0.5-rand(0)) ֒→ font 'Verdana,14' linewidth 2
set sample 101 ֒→ background '#ffff99'
set parametric set output sprintf('../%s.eps', Nome)
set trange [0:4] replot
# Gera uma tabela de dados set term pop
set table 'filled.tab' replot
plot g(t)+ruido(5.0),f(t)+ruido(5.0)
unset table
unset parametric
set iso 2, 100 50
First
set xrange [0:100]; set yrange [0:50] Second
set table 'filledbg.tab' 40
splot y*0.5

Amplitude [a.u.]
unset table 30

# Faz o gráfico das funções 20


set key left
unset colorbox 10
set border lc rgb "white"
set grid front lc rgb "#dddddd" 0
set xlabel 'Time [a.u.]' tc rgb "white" 0 20 40 60 80 100
set ylabel 'Amplitude [a.u.]' tc rgb Time [a.u.]
֒→ "white"
set palette defined (0 0.2 0.2 0.2, 1
֒→ 0.6 0.6 0.6)
Física Computacional Prof. Salviano A. Leão
#!/usr/bin/gnuplot -persist set size 1.5,1.6
# Exemplo do blog Gnuplot tricks set origin -.25,-.3
# https://gnuplot-tricks.blogspot.com/ splot y t ''
# nome: curva_preenchida_07.gp
reset #Define o background somente do gráfico
Nome='background_02' set palette model RGB functions
set terminal epscairo enhanced color ֒→ 0.5+gray/10.0, 0.5+gray/2.0,
֒→ font 'Verdana,14' linewidth 2 ֒→ 0.5+gray/2.0
֒→ background '#ffff99' set size 1.208, 1.295
set output sprintf('../%s.eps', Nome) set origin -0.065,-0.125
splot [0:20] y t ''
# Definindo as funções
reset #Faz o gráfico da função
f(x) = exp(-x/10.0)*sin(x) set size 1,1
g(x) = exp(-x/10.0) set origin 0,0
h(x) = -exp(-x/10.0) set xtics
ruido(x) = x*(0.5-rand(0)) set ytics
# Simula os pontos experimentais set xlabel 'Time [s]'
set sample 30 set ylabel 'Position [m]'
set table 'test.dat' set border 1+2+4+8
plot [0:20] f(x)+ruido(0.2) set key reverse box
unset table
plot [0:20] f(x) w l lt 3 lw 2 t
set sample 100 ֒→ 'y=sin(x)*exp(-x/10) ', \
#Aqui inicia o gráfico g(x) w l lt rgb "#008800" t '', h(x) w
set multiplot ֒→ l lt rgb "#008800" t '', \
# Define o background de todo o fundo 'test.dat' u 1:2:($2-rand(0)*0.1-0.05):
set palette model RGB functions ($2+rand(0)*0.1+0.05) w errorb pt
֒→
֒→ 0.4+gray/1.667, 0.75+gray/4.0,
֒→ 13 lt 1 t 'Data set 2 '
֒→ 0.4+gray/1.667
set pm3d map
unset multiplot
set isosample 100,100
set yrange [-1:1]
unset colorbox
unset border
unset xtics
Física Computacional Prof. Salviano A. Leão
unset ytics
1
sin e - 10

Ä
Å

Æ
Ç
È
É

Ç
Ê
Æ

Ç
Ë

È
ata set 2

Ì
0.5
osition [m]

0
Ã

-0.5

-1
0 5 10 15 20
Time [s]

Física Computacional Prof. Salviano A. Leão


Incluindo imagens
Os estilos de plotagem image, rgbimage e 3.5
- matri
5

rgbalpha projetam uma grade uniformemente

Í
Í

Î
3
4
amostrada de valores de dados em um plano em 2.5

2D ou 3D. Os dados de entrada podem ser uma 2 3

imagem de bitmap real, talvez convertida de um 1.5

formato padrão, como PNG, ou uma matriz 1 2

simples de valores numéricos. 0.5


1
0
# imagem_01.gp
-0.5 0
reset -1 0 1 2 3 4 5
Nome='Imagem_01'
set term push
plot '-' matrix with image Esta figura ilustra a geração de um mapa de
5 4 3 1 0
2 2 0 0 1 calor a partir de uma matriz de valores escalares.
0 0 0 1 0 A paleta atual é usada para mapear cada valor
0 1 2 4 3 na cor atribuída ao pixel correspondente.
e
e
set terminal epscairo enhanced font
֒→ 'Verdana,14' linewidth 2
set output sprintf('../%s.eps', Nome)
replot
set output
set term pop
replot

Física Computacional Prof. Salviano A. Leão


image

Cada pixel (ponto de dados) da imagem 2D de entrada se tornará um retângulo ou um


paralelepípedo no gráfico. As coordenadas de cada ponto de dados determinarão o centro do
paralelepípedo. Ou seja, um conjunto de dados M × N formará uma imagem com M × N pixels.
Isso é diferente do estilo de plotagem pm3d, em que um conjunto de dados M × N formará uma
superfície de elementos (M − 1) × (N − 1). As direções de varredura para uma grade de dados de
imagem binária podem ser controladas por palavras-chave adicionais.
No exemplo a seguir incluimos uma imagen no gráfico. Primeiro identifica-se o tamanho da imagem
como seguinte comando do pacote imagemagick:

> identify linux.jpg


linux.jpg JPEG 203x244 203x244+0+0 8-bit sRGB 11.4KB 0.000u 0:00.000

Se a imagem possuir um canal alfa (tiver um fundo transparente), deve-se usar rgbalpha caso
contrário rgbimage.

Física Computacional Prof. Salviano A. Leão


Imagens

# imagem_02.gp # imagem_03.gp
reset reset
Nome='Imagem_02' Nome='Imagem_03'
set term push set term push
set xrange [0:202] set xrange [0:202]
set yrange [0:243] set yrange [0:243]
set view 30,9,1,1
plot '../Figs/linux.jpg' binary splot '../Figs/linux.jpg' binary
֒→ filetype=jpg with rgbalpha notitle ֒→ filetype=jpg with rgbalpha notitle

set terminal epscairo enhanced color set terminal epscairo enhanced color
֒→ font 'Verdana,14' ֒→ font 'Verdana,14'
set output sprintf('../%s.eps', Nome) set output sprintf('../%s.eps', Nome)
replot replot
set term pop set term pop
set output set output
replot replot

250

200

300
150
250

200
100
150

100
50
50
250
0 0
200

-50 150

0 50 100 150 200 100


0
50 50
100
150
200 0

Física Computacional Prof. Salviano A. Leão


Imagem com gradiente

#!/usr/bin/gnuplot -persist unset tics


reset unset border
Nome='Imagem_04' set lmargin at screen 0.2
set term push set rmargin at screen 0.95
set terminal epscairo font 'Verdana,14' set bmargin at screen 0.17
֒→ linewidth 2 set tmargin at screen 0.95
set output sprintf('../%s.eps', Nome) #Plot the background image
plot '../Figs/Linux_logo_05.png' binary
# Definindo as funções ֒→ filetype=png with rgbalpha notitle
f(x) = exp(-x/10.0)*sin(x)
g(x) = exp(-x/10.0) #Faz o gráfico da função
h(x) = -exp(-x/10.0) set size 1,1
# Define origin
set multiplot set origin 0,0
set lmargin at screen 0.15
# define a background set xtics
set palette model RGB functions set ytics
֒→ 0.5+gray/1.75, 0.80+gray/4.0, # Define the axis
֒→ 0.2+gray/1.667 set xlabel 'Time [s]'
set pm3d map set ylabel 'Position [m]'
set isosample 100,100 set border 1+2+4+8
set yrange [-1:1] set key bottom left
unset colorbox set xrange [0:20]
unset border set yrange [-1:1]
unset xtics plot [0:20] f(x) w l lt 3 lw 4 t
unset ytics ֒→ 'y=sin(x)*exp(-x/10) ', \
set size 1.3,1.4 g(x) w l lw 3 lt rgb "#008800" t '',
set origin -.15,-.22 ֒→ h(x) w l lw 3 lt rgb "#008800" t
splot y t '' ֒→ ''
unset multiplot
set size 1,1 set term pop
set origin 0,0 set output

# Tamanho da imagem, usando o identify


# > identify Linux_logo_05.png
#Linux_logo_05.png PNG 400x340
Física Computacional Prof. Salviano A. Leão
Imagem com background

0.5
osition [m]

0
Ï

-0.5

-1
0 5 10 15 20
Time [s]

Física Computacional Prof. Salviano A. Leão


Gráficos paramétricos
Coordenadas Polares 1/5

40
Nome='polar_espiral' t

set term push


set terminal svg size 800,800 enhanced 30

֒→ fname 'Verdana,14' linewidth 2


֒→ background '#ffffff'
20
set output sprintf('%s.svg', Nome)
set size square
set xtics axis nomirror 10

set ytics axis nomirror


set zeroaxis
unset border 0
0 10 20 30 40
-40 -30 -20 -10 0 10 20 30 40
set samples 500
set polar -10
plot [0:12*pi] t
set output
set terminal pop -20

replot
unset parametric
-30
!inkscape -E ../polar_espiral.eps
֒→ polar_espiral.svg
-40

Física Computacional Prof. Salviano A. Leão


Coordenadas Polares 2/5

3
reset

ÐÑ
Ò
ÓÔ
ÕÖ
×Ø
ÐÓ
ÔÕ
Nome='polar_01'

Ù
Ú
ÐÑ
Ò
ÓÔ
ÛÙ
Õ
ÜÝ
Þ
Ö
Þ
Ú
×Ø
ÐÓ
Ôß
Þ
Õ
×Ø
ÐÓ
Ù
Ú
ÔÕ
ÜÝ
Þ
Ö
ÐÑ
Ò
ÓÞ
Ú
ÔÕ
set term push
set terminal svg size 800,800 enhanced 2

֒→ fname 'Verdana,14' linewidth 2


֒→ background '#ffffff'
set output sprintf('%s.svg', Nome) 1

set size square


set key top left
set samples 800
0
set trange[0:4*pi]
set parametric
set xrang[-3:3]; set yrange[-3:3]
plot sin(t), cos(t) lw 2 lt 7,\ -1

3*sin(t-3) lw 2, 2*cos(t+2) lw 2,\


cos(3*t) lw 2, sin(2*t) lw 2 lt 1
#set terminal epscairo size 200, 200 -2
֒→ enhanced color font 'Verdana,14'
֒→ linewidth 2 background '#ffffff'
#set output sprintf('../%s.eps', Nome)
-3
#replot -3 -2 -1 0 1 2 3
set output
set terminal pop
replot
unset parametric
!inkscape -E ../polar_01.eps
֒→ polar_01.svg

Física Computacional Prof. Salviano A. Leão


Coordenadas Polares 3/5

reset
Nome='polar_atomo'
set term push
set terminal svg size 800,800 enhanced
֒→ fname 'Verdana,14' linewidth 2
֒→ background '#ffff99'
set output sprintf('%s.svg', Nome)
unset border; unset tics; unset key
set size square
set samples 800
set trange[0:4*pi]
set parametric
set xrang[-3:3]; set yrange[-3:3]
plot sin(t), cos(t) lw 2,\
cos(3*t) lw 2, sin(2*t) lw 2,\
3*sin(t-3) lw 2, 2*cos(t+2) lw 2,\
3*cos(t-3) lw 2, 2*sin(t+2) lw 2,\
3*cos(t) lw 2, 0.5*sin(t) lw 2,\
0.5*sin(t) lw 2, 3*cos(t) lw 2

#set terminal epscairo size 200, 200


֒→ enhanced color font 'Verdana,14'
֒→ linewidth 2 background '#ffffff'
#set output sprintf('../%s.eps', Nome)
#replot
set output
set terminal pop
replot
unset parametric
!inkscape -E ../polar_atomo.eps
֒→ polar_atomo.svg

Física Computacional Prof. Salviano A. Leão


Coordenadas Polares 4/5

reset # now plot the polar grid only


Nome='polar_02' set style line 11 lc rgb 'white' lw 2
set term push set grid polar ls 11
set terminal svg size 800,800 enhanced set polar; set rrange[0:r]
֒→ fname 'Verdana,14' linewidth 2 unset raxis
֒→ background '#ffffff' set rtics format '' scale 0
set output sprintf('%s.svg', Nome) unset parametric
set for [i=0:330:30] label at first
set lmargin at screen 0.05 ֒→ (r+0.35)*cos(i), first
set rmargin at screen 0.85 ֒→ (r+0.35)*sin(i)\
set bmargin at screen 0.1 center sprintf('%d', i)
set tmargin at screen 0.9 plot NaN w l
unset multiplot
set pm3d map ; unset key

set multiplot

ã
à
1
# plot the heatmap 120 60

set parametric

à
áã
set isosamples 500
unset border 0.8
150 30
unset xtics
unset ytics

à
áâ
set angles degree 0.6
r = 6
set urange[0:r] # radius 180 0 0.5

set vrange[0:360] # angle


0.4
set xrange[-r:r]; set yrange[-r:r]
set colorbox user origin 0.9,0.1 size 0.3
֒→ 0.03,0.8
210 330
splot u*cos(v), u*sin(v), 0.2

֒→ (cos(v)*besj0(2*u))**2
0.1

240 300
0

ä
â
à

Física Computacional Prof. Salviano A. Leão


Coordenadas Polares 5/5

reset unset xtics ; unset ytics


Nome='polar_03' set rrange [ 0.0000 : 4.10000 ]
set term push ֒→ noreverse nowriteback
set terminal svg size 800,800 enhanced plot 3.+sin(t)*cos(5*t) with
֒→ fname 'Verdana,14' linewidth 2 ֒→ filledcurve above r=2.5 notitle lt
֒→ background '#ffffff' ֒→ 4,\
set output sprintf('%s.svg', Nome) 2.5 with lines lt 1 lw 2 notitle,\
unset border 3.+sin(t)*cos(5*t) with line lw 2
set style fill solid 0.70 border ֒→ lt 7
set style circle radius graph 0.02, set output
֒→ first 0.00000, 0.00000 set terminal pop
set style ellipse size graph 0.05, replot
֒→ 0.03, first 0.00000 angle 0 units unset parametric
֒→ xy !inkscape -E ../polar_03.eps
set dummy t, y ֒→ polar_03.svg
set grid polar 0.523599
set grid noxtics nomxtics noytics
֒→ nomytics noztics nomztics \
nox2tics nomx2tics noy2tics nomy2tics
֒→ nocbtics nomcbtics
rai mitante 2.5
set grid layerdefault lt 0 linewidth

å
æç
è
éê
ëç
ì
íî
ïð
ñå
ëí
ò
ð
îï
֒→ 1.00, lt 0 linewidth 1.000
set key title "raio limitante 2.5"
֒→ center
set key outside right top vertical
֒→ Right noreverse enhanced autotitle
֒→ nobox
set key noinvert samplen 0.7 spacing 1 0 1 2 3 4
֒→ width 0 height 0
set style textbox transparent margins
֒→ 1.0, 1.0 border
set polar; set samples 200
set size ratio 1 1,1

Física Computacional Prof. Salviano A. Leão


Dois eixos

1 2
sin(x)
reset 2*cos(8*x)*exp(-x)
0.8
Nome='dois_eixos_01' 1.6

set term push 0.6


1.2
set terminal postscript eps enhanced
0.4
֒→ color font 'Arial,14' linewidth 2 0.8

֒→ background '#ffffff' 0.2


0.4
set output sprintf('../%s.eps', Nome) 0
set ytics nomirror 0
-0.2
set samples 400
-0.4
set y2tics 0.4 -0.4
set my2tics 4 -0.8
-0.6
set xtics pi/4.
set mxtics 4 -0.8 -1.2

set xtics (0, '{/Symbol p}/4' pi/4, -1 -1.6


֒→ '{/Symbol p}/2' pi/2, '3{/Symbol 0 π/4 π/2 3π/4 π 5π/4 3π/2 7π/4 2π

֒→ p}/4' 3*pi/4, '{/Symbol p}' pi,\


'5{/Symbol p}/4' 5*pi/4, '3{/Symbol
֒→ p}/2' 3*pi/2, '7{/Symbol p}/4'
֒→ 7*pi/4, '2{/Symbol p}' 2*pi)
set grid
plot [0:2*pi] sin(x) lw 2axis x1y1,\
2*cos(8*x)*exp(-x) lw 2 axis x1y2
set output
set terminal pop
replot

Física Computacional Prof. Salviano A. Leão


Escalas logarítmicas

http://www.gnuplotting.org/tag/logscale/

Física Computacional Prof. Salviano A. Leão


Gráficos de Superfícies
Exemplo: Supefícies

reset
set isosamples 50,50
set grid
set format z "%4.2f"
f(x,y)=log(sqrt( x*x + y*y))
splot f(x,y)

Exemplo de Superfície

3.00
2.50
2.00
1.50
1.00
Eixo Z
0.50
0.00
−0.50
−1.00
−1.50

10
5
−10 0
−5 Eixo Y
0 −5
Eixo X 5
−10
10
Física Computacional Prof. Salviano A. Leão
set format Formato dos valores numéricos
set hidden3D No modo 3D, esconde o que fica atrás da superfície.

Física Computacional Prof. Salviano A. Leão


Exemplos 5: Supefícies

Exemplo de Superfície
reset
set isosamples 50,50
set grid
set xlabel "X"
set ylabel "Y"
set zlabel "Z" 1.00

set title "Exemplo de Superfície" 0.50


set ztics 0.50 Eixo Z 0.00
set format z "%4.2f"
−0.50
f(x,y)=sin(y/7)*cos(x/5)
−1.00
set cntrparam levels incremental
֒→ -1,0.25,1 10
5
set contour base −10 0
set hidden3d −5 Eixo Y
0 −5
5
splot f(x,y) t "" Eixo X −10
10

Física Computacional Prof. Salviano A. Leão


Moebius 1/2

Fita de Moebius
reset (2−v*sin(u/2))*sin(u),(2−v*sin(u/2))*cos(u),v*cos(u/2)
Nome='moebius_01'
load "salva_eps.gp"
set bar 1.000000 front
set style circle radius graph 0.02,
֒→ first 0.00000, 0.00000
set style ellipse size graph 0.05, 0.3
0.2
֒→ 0.03, first 0.00000 angle 0 units 0.1
֒→ xy 0
−0.1 2.5
set dummy u, v −0.2 2
1.5
set style textbox transparent margins −0.3
1
֒→ 1.0, 1.0 border 0.5
0
unset logscale −2.5 −2
−1
−0.5
−1.5 −1 −0.5
set parametric 0 0.5
−1.5
1 −2
set isosamples 51, 31 1.5 2 2.5 −2.5
set hidden3d back offset 1
֒→ trianglepattern 3 undefined 1
֒→ altdiagonal bentover
set style data lines
set view 45,22
set title "Fita de Moebius"
set urange [ 0.00000 : 6.28319 ]
֒→ noreverse nowriteback
set vrange [ -0.250000 : 0.250000 ]
֒→ noreverse nowriteback
#set colorbox vertical origin screen
֒→ 0.9, 0.2, 0 size screen 0.05, 0.6,
֒→ 0 front bdefault
splot
֒→ (2-v*sin(u/2))*sin(u),(2-v*sin(u/2))*cos(u),v*cos(u/2)
set output
set terminal pop
replot

Física Computacional Prof. Salviano A. Leão


Moebius 1/2

Fita de Moebius
reset (2−v*sin(u/2))*sin(u),(2−v*sin(u/2))*cos(u),v*cos(u/2)
Nome='moebius_02'
load "salva_eps.gp"
set bar 1.000000 front 0.3

set style circle radius graph 0.02, 0.2

֒→ first 0.00000, 0.00000 0.1


0
set style ellipse size graph 0.05, 0.3
0.2 −0.1
֒→ 0.03, first 0.00000 angle 0 units 0.1
−0.2
֒→ xy 0
−0.3
−0.1 2.5
set dummy u, v −0.2 2
1.5
set style textbox transparent margins −0.3
1
֒→ 1.0, 1.0 border 0.5
0
unset logscale −2.5 −2
−1
−0.5
−1.5 −1 −0.5
set parametric 0 0.5
−1.5
1 −2
set isosamples 51, 31 1.5 2 2.5 −2.5
set hidden3d back offset 1
֒→ trianglepattern 3 undefined 1
֒→ altdiagonal bentover
set style data lines
set view 45,22
set title "Fita de Moebius"
set urange [ 0.00000 : 6.28319 ]
֒→ noreverse nowriteback
set vrange [ -0.250000 : 0.250000 ]
֒→ noreverse nowriteback
set pm3d at s
#set colorbox vertical origin screen
֒→ 0.9, 0.2, 0 size screen 0.05, 0.6,
֒→ 0 front bdefault
splot
֒→ (2-v*sin(u/2))*sin(u),(2-v*sin(u/2))*cos(u),v*cos(u/2)
set output
set terminal pop
replot
Física Computacional Prof. Salviano A. Leão
Lendo arquivo

Se você tem um arquivo chamado sup.gp com o Você pode chamá-lo no gnuplot com o seguinte
seguinte conteúdo comando
reset gnuplot> load "sup.gp"
set grid
set xlabel "X"
set ylabel "Y"
set zlabel "Z"
set title "Exemplo de Superfície"
set ztics 0.50
set format z "%4.2f"
f(x,y)=sin(y/7)*cos(x/5)
set cntrparam levels incremental
֒→ -1,0.25,1
set contour base
set hidden3d
splot f(x,y) t ""

Física Computacional Prof. Salviano A. Leão


Rodando Scripts

Se você tem um arquivo chamado sup.gp com o seguinte conteúdo

reset
set grid
set xlabel "X"
set ylabel "Y"
set zlabel "Z"
set title "Exemplo de Superfície"
set ztics 0.50
set format z "%4.2f"
f(x,y)=sin(y/7)*cos(x/5)
set cntrparam levels incremental -1,0.25,1
set contour base
set hidden3d
splot f(x,y) t""
pause -1

Você terá um gráfico na tela e ao pressionar enter ele será fechado.

Física Computacional Prof. Salviano A. Leão


Salvar Grafico

Exemplo gera as figuras sup.eps, sup.fig e sup.png

reset
set xlabel "X"; set ylabel "Y"; set zlabel "Z"
set title "Exemplo de Superfície"
set grid; set ztics 0.50
set format z "%4.2f"
f(x,y)=sin(y/7)*cos(x/5)
set cntrparam levels incremental -1,0.25,1
set contour base; set hidden3d
splot f(x,y) t""
pause -1 "Tecle Return Gerar Grafico EPS"
set terminal postscript landscape enhanced color lw 2 "Helvetica" 14
set out "sup.eps"
replot
set output # Volta a saida output para seu valor padrao
set terminal x11 # Volta para o terminal X11
!ls -ahl sup.eps # Lista o tamanho do arquivo gerado
pause -1 "Tecle Return Gerar Grafico FIG"
set term fig big color fontsize 14 thickness 2
set out "sup.fig"
replot
set output # Volta a saida output para seu valor padrao
set terminal x11 # Volta para o terminal X11
!ls -ahl sup.fig # Lista o tamanho do arquivo gerado
pause -1 "Tecle Return Gerar Grafico PNG"
set term png big color fontsize 14 thickness 2
set out "sup.png"
replot
set output # Volta a saida output para seu valor padrao
set terminal x11 # Volta para o terminal X11
!ls -ahl sup.png # Lista o tamanho do arquivo gerado

Física Computacional Prof. Salviano A. Leão


Terminais
Terminais

gnuplot> show terminal


terminal type is qt 0 enhanced font "Sans,9"

os possíveis terminais

cairolatex canvas cgm context


corel dumb dxf eepic
emf emtex epscairo epslatex
fig gif hpgl jpeg
latex lua mf mp
pcl5 pdfcairo png pngcairo
pop postscript pslatex pstex
pstricks push qms qt
svg tek40xx tek410x texdraw
tgif tikz tkcanvas tpic
vttek wxt x11 xlib
xterm

Física Computacional Prof. Salviano A. Leão


Exemplos:

Alguns exemplos:

set terminal qt size 600,400 enhanced font 'Verdana,10' persist

Um arquivo png

set terminal pngcairo size 600,400 enhanced font 'Verdana,10'


set output 'grafico-01.png'

Caso omitido o tamanho padrão é 640 × 480.

set terminal png transparent nocrop enhanced size 450,320 font "arial,8"
set output 'Figura01.png'
#
# Terminal SVG
set terminal svg size 1024,768 dynamic enhanced "Helvetica 14" linewidth 1.8
set output "Figura01.svg"
#
# Agora o terminal para o postscript
set terminal postscript landscape enhanced color lw 2 "Helvetica" 14
set output "Figura01.eps"

Física Computacional Prof. Salviano A. Leão


Para os terminais svg, que são parecidos com os png

set terminal svg size 600,400 fname 'Verdana' fsize 10


set output 'grafico-01.svg'

Para os terminais postscript, temos

set terminal postscript eps enhanced color font 'Helvetica,10'


set output 'grafico-01.eps'

Exemplo:
sin(x)
1
# aumenta espessura do contorno
set border linewidth 1.5
set xlabel '{/Helvetica-Oblique x}'
set ylabel '{/Helvetica-Oblique y}' 0

y
set xtics ('-2{/Symbol p}' -2*pi, \
'-{/Symbol p}' -pi,0, \
'{/Symbol p}' pi,'2{/Symbol p}'
֒→ 2*pi) −1
plot f(x) title
֒→ 'sin({/Helvetica-Oblique x})' \
with lines linestyle 1, \ −2π −π 0 π 2π
g(x) notitle with lines ls 2 x

Física Computacional Prof. Salviano A. Leão


Ajuste de curvas “Fit”
Ajuste dos dado do arquivo dados.dat com uma função pré-definida qualquer, por exemplo

f1(x) = a1*exp(-b1*x**2) # define a funcao para o ajuste


a1 = 10; b1 = 200; # chute inicial para a1 e b1

Agora para ajustar a curva use o comando:

gnuplot> fit f1(x) 'dados.dat' using 1:2 via a1, b1

Final set of parameters Asymptotic Standard Error


======================= ==========================

a1 = 9.76472 +/- 0.01418 (0.1452%)


b1 = 429.503 +/- 1.958 (0.4558%)

Já o comando:
f2(x) = a2 *exp(-b2*x**2) # define a funcao para o ajuste
a2 = 20; b2 = 100; # chute inicial para a2 e b2
fit f2(x) 'dados.dat' using 1:3 via a2, b2

Final set of parameters Asymptotic Standard Error


======================= ==========================

a2 = 38.1419 +/- 0.7631 (2.001%)


b2 = 6802.34 +/- 314.3 (4.62%)

Física Computacional Prof. Salviano A. Leão


A curva foi ajustada e os dados agora podem ser plotados com o comando:

set key at 0.045,37 title 'F(x)=A*exp(-B*x**2)' # Titulo do grafico!


set title 'Distribuição Gaussiana ajustada' # Note a nova linha com o \n!
set pointsize 1.5 # Largura do ponto!
set xlabel 'Largura, {/Symbol D}x' # Simbolo Greek!
set ylabel 'Intensidade, {/Times-Italic I}_A, (A)' # italicos!
plot 'dados.dat' using 1:2 title 'Exp. 1' with points lt 1,\
'dados.dat' using 1:3 title 'Exp. 2' with points lt 3,\
f1(x) title 'Fit Exp. 1' w l,\
f2(x) title 'Fit Exp. 2' w l

Física Computacional Prof. Salviano A. Leão


Barras de Erros
O formato do arquivo de dados

As barras de erro são suportados para gráficos 2D de arquivos de dados através da leitura de um a
quatro colunas adicionais (ou usando entradas); esses valores adicionais são usados de maneiras
diferentes pelos vários estilos de barras de erro.
Na situação padrão, o gnuplot espera ver três, quatro ou seis números em cada linha do arquivo de
dados, da seguinte forma:

(x, y, ydelta),
(x , Y, ylow, yhigh),
(x, y, xdelta),
(x, y, XLow, xhigh),
(x, y, xdelta, ydelta),
(X, Y, XLow, xhigh, ylow, yhigh)
A coordenada x deve ser especificada. A ordem dos números deve ser exatamente como dado
acima, embora o uso qualificador using possa manipular a ordem e fornecer valores para as
colunas ausentes. Por exemplo,

plot 'dados.dat' with errorbars # (x,y,dx,dy)


plot 'dados.dat' using 1:2:(sqrt($1)) with xerrorbars # (x,y,dx)
plot 'dados.dat' using 1:2:(sqrt($1)) with yerrorbars # (x,y,dy)
plot 'dados.dat' using 1:2:($1-$3):($1+$3):4:5 with xyerrorbars # (x,y,dx,dy)

O último exemplo é para um arquivo que contém uma combinação não suportada de erros x e y
relativos e absolutos. O qualificador using gera o valor absoluto xmin e xmax do erro relativo.

Física Computacional Prof. Salviano A. Leão


Tabela de estilos

Barra de erros na direção


Símbolos x y xey
Não-conectados xerrorbars yerrorbars xyerrorbars
Conectados xerrorlines yerrorlines xyerrorlines

Física Computacional Prof. Salviano A. Leão


Iteração
Novos comando com a versão 5

• Comando sum, uma somatória, cuja sintaxe • Comando while. Sintaxe


é:
while (<expr>) {
sum [<var> = <inicio>:<fim>] <comandos>
֒→ <expressão> <comandos>
}

Exemplo
print sum [i=1:10] i
• Comando do. Sintaxe
55.
do for <iteracao-spec> {
<comandos>
<comandos>
• Comando if. Sintaxe }

if (<condicao>) { <comandos>;
<comandos>
<comandos>
} else {
<comandos>
}

Física Computacional Prof. Salviano A. Leão


Animação
Uma pequena animação

Oscilador Harmônico
reset 1
Partícula
set encoding utf8 Energia Cinética
set terminal qt enhanced Energia Potencial

set size square


set title "{/= 16 Oscilador Harmônico}"

ôø
ó
set parametric
set dummy t
n=3
np=501 # Numero de pontos

ó
ô÷
Volta=2*pi
T=n*Volta
dt=T/(np-1) # Discretização

ó
ôö
set trange [0:T]
set xrange [-1:1]
set yrange [-0.1:1]
set zeroaxis

ó
ôõ
do for[i=0:np]{
plot cos(t),cos(t)**2 with lines
֒→ notitle, \
0
cos(i*dt), cos(i*dt)*cos(i*dt)
֒→ with points lc 3 pt 7 ps 2 t
֒→ "Partícula",\ -1 0 1

óù
ôú

ôú
ó
1.0-abs(cos(i*dt)), 0.0 with
֒→ points lc 7 pt 7 ps 2 t "Energia
֒→ Cinética" ,\
0.0, cos(i*dt)*cos(i*dt) with
֒→ points lc 4 pt 7 ps 2 t "Energia
֒→ Potencial"
pause 0.1
}

Física Computacional Prof. Salviano A. Leão


Exemplos

Considere o seguinte exemplo: set multiplot layout 2,2


fourier(k, x) = sin(3./2*k)/k *
set multiplot layout 2,2 ֒→ 2./3*cos(k*x)
do for [nome in "A B C D"] { do for [pote = 0:3] {
arquivo = nome . ".dat" TERMOS = 10**pote
set title sprintf("Condição %s",name) set title sprintf("%g termos das série
plot arquivo title nome ֒→ de Fourier",TERMOS )
} plot 0.5+sum[k=1:TERMOS] fourier(k,x)
unset multiplot ֒→ notitle
}
unset multiplot
ou ainda

Física Computacional Prof. Salviano A. Leão


for

plot for [var = inicio: fim {:incremento}]

ou
plot for [var in 'algumas palavras do tipo string']

plot for [i=1:1000] 'dados'.i.'.dat' using 1:2 title 'Fluxo '.i


# ou ainda
plot for [i=1:1000] 'dados'.i.'.dat' using 1:($2+i) title 'Fluxo '.i

reset
f(x,a) = exp(-(x-a)*(x-a)/(1+a*0.5))+0.05*rand(0)
title(n) = sprintf("column %d", n)
set table 'iter.dat'
plot [0:20] '+' using \
(f($1,1)):(f($1,2)):(f($1,3)):(f($1,4)):(f($1,5)):(f($1,6)) w xyerror
unset table
#
set yrange [0:15]
plot for [i=1:6] 'iter.dat' u 0:(column(i)+2*i) w l lw 1.5 t title(i)
!rm 'iter.dat' #apag arquivo gerado

Física Computacional Prof. Salviano A. Leão


Após a reinicialização da sessão gnuplot, definimos uma função, a qual será uma Gaussiana, cujo
centro e a largura é determinada pelo parâmetro "a". Em seguida, imprime-se essa função em um
arquivo, ’iter.dat’, e faz-se isso por seis vezes, e cada vez com um parâmetro diferente, de modo que
a Gaussiana é deslocada, alargando-se. Note, no entanto, que para fazer isso traça-se o gráfico de
um arquivo especial, o ’+’. Este foi introduzido no gnuplot 4.4, e o objetivo deste arquivo especial é
que, invocando ele, pode-se usar os modificadores padrões do “plot” também para funções. Isto é,
pode-se especificar ’using’ para uma função. A importância disso é que muitos estilos de “plot”
exigirem várias colunas, e nós não poderíamos usar esses estilos de “plot” com funções sem o ’+’
pseudo-arquivo.

Física Computacional Prof. Salviano A. Leão


Exemplo

reset
unset colorbox
unset key
set xrange [0:10]
set cbrange [0:1]
plot '+' using ($1):(sin($1)):(0.5*(1.0+sin($1))) with lines lw 3 lc palette, \
'+' using ($1):(sin($1)+2):($1/10.0) with lines lw 3 lc palette

reset
arquivos = "dados1 dados2 dados3 dados4 dados5"
plot for [file in arquivos] file using 1:2 with lines

ou
reset
arquivos = "dados1 dados2 dados3 dados4 dados5"
plot for [file in arquivos] file."dat" using 1:2 with lines

ou
reset
arquivos(n) = sprintf("dados_%d", n)
plot for [i=1:10] arquivos(i) using 1:2 with lines

Física Computacional Prof. Salviano A. Leão


reset
set samples 201
set parametric; set angles degrees
v0=15.0; Ang=45.0
k=0.3; h=0.0; g=9.8
Vx=v0*cos(Ang); Vy=v0*sin(Ang)
np=251; Tq=(2.0*Vy)/g
gk=g/k; glx=(Vy+gk)/Vx
xm=(2*Vx*Vy)/g; ym=(Vy*Vy)/(2*g)
dt=Tq/(np-1); T=0.0; set trange[0:Tq]
x(t)= Vx * t
y(t)= h + Vy * t - 0.5 * g * t**2
xr(t)=(1 - exp(-k*t))*(Vx/k)
yr(t)=-gk*t + ( (Vy+gk)/k ) * (1 - exp(-k*t))
set xr[0:xm]; set yr[0:ym]; set nokey
do for [i=0:np]{
plot x(t), y(t) , \
xr(t), yr(t) lt 3, \
x(T), y(T) with points lc 3 pt 7 ps 2, \
xr(T), yr(T) with points lc 4 pt 7 ps 1.6
T=T+dt
}

Física Computacional Prof. Salviano A. Leão


reset
set samples 201; set polar
a1=2.8; a2=-3
e1=0.85; e2=0.9
i=0; np=401; dt=(4*pi)/np ; T=0
r1(t)= a1/(1-e1*cos(t))
r2(t)= a2/(1-e2*cos(t))
r(t)= a1/(1-e1*cos(t)) - a2/(1-e2*cos(t))
load "Elipses_Int.gp"
pause -1 "Type return to continue"

e o arquivo de iteração

set print "Lixo_01.dat"


print 0.0, 0.0; print T, r1(T)
set print "Lixo_02.dat"
print 0.0, 0.0; print T, r2(T)
set print "Lixo_03.dat"
print 0.0, 0.0; print T, r(T)
plot r1(t) notitle, r2(t) notitle, r(t) notitle, \
"Lixo_01.dat" with linespoints lc 3 pt 7 ps 1 title "P1", \
"Lixo_02.dat" with linespoints lc 4 pt 7 ps 1 title "P2",\
"Lixo_03.dat" with linespoints lc 5 pt 7 ps 1 title "Pr"
T=T+dt; i=i+1
if (i<=2*np) reread

Física Computacional Prof. Salviano A. Leão


reset
set samples 201
set polar
a1=2.8; a2=-3
e1=0.85; e2=0.9
i=0
np=401
dt=(4*pi)/np
T=0
r1(t)= a1/(1-e1*cos(t))
r2(t)= a2/(1-e2*cos(t))
r(t)= a1/(1-e1*cos(t)) - a2/(1-e2*cos(t))
do for [i=0:np]{
set print "Lixo_01.dat"
print 0.0, 0.0
print T, r1(T)
set print "Lixo_02.dat"
print 0.0, 0.0
print T, r2(T)
set print "Lixo_03.dat"
print 0.0, 0.0
print T, r(T)
plot r1(t) notitle, r2(t) notitle, r(t) notitle, \
"Lixo_01.dat" with linespoints lc 3 pt 7 ps 1 title "P1", \
"Lixo_02.dat" with linespoints lc 4 pt 7 ps 1 title "P2",\
"Lixo_03.dat" with linespoints lc 5 pt 7 ps 1 title "Pr"
T=T+dt
}

Física Computacional Prof. Salviano A. Leão


Gnuplot na linha de comando

# echo 'set xtic rotate by 270; set style data histograms; \


set style fill solid 1.00 border -1; \
plot "< du -h -d 1 | sed 's#./##g' " using 1:xtic(2); \
pause 10'| gnuplot -persist

56 - - 7 - 84988 5 : ; <

, -

. (( " ( /
, '

.
4
"
# $
% & '

"
$ *+

01

0 !
$ (($
0 /

0 !
2/
' "

2 3
.
(

-+
**

'
/
)
!

-
(

Física Computacional Prof. Salviano A. Leão


Gerando um gráfico aleatório

# awk 'BEGIN{for(i=1;i<=100;i++) print int(101*rand()) int(101*rand())}' | \


gnuplot -persist -e "plot '-'"

Física Computacional Prof. Salviano A. Leão


Referências
Blogs úteis

• Gnuplot not so Frequently Asked Questions


• Gnuplotting
• Gnuplot tricks
• Gnuplot surprising
• Impossible gnuplot graphs
• Math - Blog
• Gnuplot homepage
• Water Programming: A Collaborative Research Blog
• Gnuplot in Action

Física Computacional Prof. Salviano A. Leão


Referências

Página oficial do Gunuplot Disponível em: http://www.gnuplot.info/. Acesso em: 10 jan.


2011.
Dicas e Truques do Gnuplot Disponível em:
http://t16web.lanl.gov/Kawano/gnuplot/index-e.html. Acesso em: 10 jan. 2011.
Introdução ao Gnuplot Disponível em:
http://www4.fct.unesp.br/docentes/carto/galo/web/gnuplot/fct.htm. Acesso
em: 10 jan. 2011.
Introdução ao Gnuplot Disponível em:
http://www.calculo-numerico.sobralmatematica.org/textos/gnuplot_introducao.pd
Acesso em: 10 jan. 2011.
Gnuplot tricks Neste blog, disponível em: http://gnuplot-tricks.blogspot.com/ há um
grande número de exemplos das possibilidades do Gnuplot. Acesso em: 10 jan. 2011.
Gnuplotting - Create scientific plots using gnuplot Excelente blog, disponível em:
http://www.gnuplotting.org/

Física Computacional Prof. Salviano A. Leão

Você também pode gostar