Gnuplot: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
 
(26 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 36: Linha 36:
===Graficando funções:===
===Graficando funções:===


1. Gráfico da função seno
*'''plot'''
 
Esse é o comando para desenhar gráficos 2D. Ele pode graficar ("plotar") a partir de uma função ou de dados lidos de um arquivo. Por exemplo, para graficar a função seno,
             gnuplot> plot sin(x)
             gnuplot> plot sin(x)
 
Para graficar a função cosseno no mesmo gráfico do seno, utiliza-se, em seguida,
2. Agora a função coseno no mesmo gráfico com o seno
 
             gnuplot> replot cos(x)
             gnuplot> replot cos(x)
Neste caso, se utilizássemos ''plot'' no lugar de ''replot'', então o gráfico da função seno seria perdido.
*'''splot'''
Esse é o comando para desenhar gráficos 3D. Ele pode graficar ("plotar") a partir de uma função ou de dados lidos de um arquivo de maneira muito semelhante ao comando plot. Por exemplo:
            gnuplot> splot x*y
Se quisermos graficar outra curva no mesmo gráfico, utiliza-se o ''replot'' em seguida da mesma maneira que em gráficos 2D:
            gnuplot> replot x/y


3. Nomeamos os eixos
* Nomear os eixos


             gnuplot> set xlabel "eixo Y"
             gnuplot> set xlabel "eixo Y"
             gnuplot> set ylabel "eixo X"
             gnuplot> set ylabel "eixo X"


4. Acrescentar o título "SENO e COSENO" e re-desenhar
* Acrescentar o título "SENO e COSENO" e re-desenhar


             gnuplot> set title "SENO e COSENO"
             gnuplot> set title "SENO e COSENO"
Linha 55: Linha 60:
'''Atenção''': se o gráfico é para ser inserido num relatório, então não colocamos título
'''Atenção''': se o gráfico é para ser inserido num relatório, então não colocamos título


5. Legendas: identificar as funções com os nomes "seno(x)" e "coseno(x)" respectivamente
* Legendas: identificar as funções com os nomes "seno(x)" e "coseno(x)" respectivamente


             gnuplot> plot sin(x) title "seno(x)", cos(x) title "coseno(x)"
             gnuplot> plot sin(x) title "seno(x)", cos(x) title "coseno(x)"


6. O gnuplot usa autoscale para dados e a escala x: -10, 10 para funções<br>
* O gnuplot usa autoscale para dados e a escala x: -10, 10 para funções<br>
Podemos alterar os intervalos assim (por exemplo x entre 0 e 5, y entre -3 e 3)
Podemos alterar os intervalos assim (por exemplo x entre 0 e 5, y entre -3 e 3)


Linha 65: Linha 70:
             gnuplot> set yrange [-3:3]
             gnuplot> set yrange [-3:3]


7. Ativar a grade
* Ativar a grade


             gnuplot> set grid
             gnuplot> set grid
             gnuplot> replot
             gnuplot> replot


8. Desligar a grade
* Desligar a grade


             gnuplot> unset grid
             gnuplot> unset grid
             gnuplot> replot
             gnuplot> replot


9. Passar a coordenadas polares (atenção é uma representação x,y de um gráfico polar (theta,rho=f(theta))
* Passar a coordenadas polares (atenção é uma representação x,y de um gráfico polar (theta,rho=f(theta))


             gnuplot> set title "GRAFICO POLAR"  ! trocar título
             gnuplot> set title "GRAFICO POLAR"  ! trocar título
Linha 85: Linha 90:
             gnuplot> replot
             gnuplot> replot


10. Salvar a sessão num arquivo
* Salvar a sessão num arquivo


             gnuplot> save "test1.gnu"    ! o .gnu é só por conveniência
             gnuplot> save "test1.gnu"    ! o .gnu é só por conveniência


11. Sair do Gnuplot
* Sair do Gnuplot


             gnuplot> quit
             gnuplot> quit


12. Conferir se foi gravado (fora do Gnuplot, na tela de comandos) e recarregar depois
* Conferir se foi gravado (fora do Gnuplot, na tela de comandos) e recarregar depois


             $ ls -l *.gnu
             $ ls -l *.gnu
Linha 100: Linha 105:
             gnuplot> replot
             gnuplot> replot


13. Experimente mais (e interprete o resultado):
* Experimente mais (e interprete o resultado):


             gnuplot> plot sin(t)
             gnuplot> plot sin(t)
Linha 108: Linha 113:
             gnuplot> quit
             gnuplot> quit


14. Graficando dados
* Graficando dados


     1. Crie um arquivo de dados (x,y) com a relacao y=x² entre -5 e 5 e 100 pontos (use 'seq' e 'awk')
     1. Crie um arquivo de dados (x,y) com a relacao y=x² entre -5 e 5 e 100 pontos (use 'seq' e 'awk')
Linha 115: Linha 120:
             gnuplot> plot "x2.dat"
             gnuplot> plot "x2.dat"
                  
                  
15. Graficando com linha em lugar de pontos
* Graficando com linha em lugar de pontos


             gnuplot> plot "x2.dat" with line    ! o with line pode ser abreviado para w l
             gnuplot> plot "x2.dat" with line    ! o with line pode ser abreviado para w l
Linha 121: Linha 126:
             gnuplot> replot
             gnuplot> replot


16. Mudando para linha sem pontos
* Mudando para linha sem pontos


             gnuplot> set style data lines
             gnuplot> set style data lines
             gnuplot> replot
             gnuplot> replot


17. Escala logarítmica (os dois eixos)
* Escala logarítmica (os dois eixos)


             gnuplot> set log
             gnuplot> set log
             gnuplot> replot
             gnuplot> replot


18. Voltar a escala linear
* Voltar a escala linear


             gnuplot> unset log
             gnuplot> unset log


19. Trocar X com Y
* Trocar X com Y


             gnuplot> plot "x2.dat" using 2:1 ! pode ser abreviado para u 2:1)
             gnuplot> plot "x2.dat" using 2:1 ! pode ser abreviado para u 2:1)


20. Salvar eps colorido (imprimir ou incluir em LaTex)
* Salvar ps colorido (imprimir ou incluir em LaTex)
            gnuplot> #formato postscript (PS) colorido e de qualidade
            gnuplot> set term postscript enhanced color 
            gnuplot> set output "x2.ps"
            gnuplot> replot


             gnuplot> set term postscript enhanced color  !formato postscript colorido e de qualidade
* Salvar eps colorido (imprimir ou incluir em LaTex)
            gnuplot> #formato postscript encapsulado (EPS) colorido e de qualidade
             gnuplot> set term postscript eps enhanced color   
             gnuplot> set output "x2.eps"
             gnuplot> set output "x2.eps"
             gnuplot> replot
             gnuplot> replot


21. Salvar eps em tons de cinza
* Salvar eps em tons de cinza


             gnuplot> set term postscript enhanced monochrome
             gnuplot> set term postscript eps enhanced monochrome
             gnuplot> set output "x2.eps"
             gnuplot> set output "x2.eps"
             gnuplot> replot
             gnuplot> replot


22. Se queremos o gráfico para inserir num relatório, pode se perceber depois da primeira tentativa que as fontes,
* Se queremos o gráfico para inserir num relatório, pode se perceber depois da primeira tentativa que as fontes,
--isto é números e textos que aparecem dentro do gráfico-- ficam muito pequenas no fim. Isto pode ser facilmente concertado
--isto é números e textos que aparecem dentro do gráfico-- ficam muito pequenas no fim. Isto pode ser facilmente concertado
com o seguinte truque. Antes de mudar o terminal e a saída, ou seja antes dos passos 20 ou 21, fazer:
com o seguinte truque. Antes de mudar o terminal e a saída, ou seja antes dos passos 20 ou 21, fazer:
Linha 160: Linha 171:
aumentados num fator 2.
aumentados num fator 2.


23. Após produzir a saída postscript (eps) se quiseres voltar a usar o GNUPLOT normalmente faça
* Após produzir a saída postscript (eps) se quiseres voltar a usar o GNUPLOT normalmente faça
              
              
             gnuplot> set output
             gnuplot> set output
Linha 204: Linha 215:


==Outros comandos==
==Outros comandos==
* set nokey
*'''set key'''
Desabilita a legenda do gráfico.
Habilita legendas para as curvas do gráfico. Caso não seja utilizado, por default uma legenda será colocada no canto superior direito do gráfico. No caso de mais de uma curva, as legendas vão sendo colocadas abaixo das anteriores.
Para desabilitar as legendas, basta um dos comandos (equivalentes):
          gnuplot> set key off
          gnuplot> unset key
           gnuplot> set nokey
           gnuplot> set nokey


* set parametric
*'''set parametric'''
Coloca em modo paramétrico, ou seja, há uma função para cada eixo.
Coloca em modo paramétrico, ou seja, há uma função para cada eixo.
Por exemplo, no caso de uma superfície o comando assume a forma:
Por exemplo, no caso de uma superfície o comando assume a forma:
           gnuplot> splot x(u,v) y(u,v) z(u,v)
           gnuplot> splot x(u,v) y(u,v) z(u,v)


* set hidden3d
*'''set hidden3d'''
Faz com que as linhas 'de trás' de uma superfície não sejam plotadas. Assim, fica visível apenas a parte externa da figura.
Faz com que as linhas 'de trás' de uma superfície não sejam plotadas. Assim, fica visível apenas a parte externa da figura.
           gnuplot> set hidden3d
           gnuplot> set hidden3d


* set view
*'''set view'''
Controla o ângulo de visão (ou seja, como os eixos estão dispostas na tela) e a escala deles.
Controla o ângulo de visão (ou seja, como os eixos estão dispostas na tela) e a escala deles.
           gnuplot> set view 30, 40, 2, 3
           gnuplot> set view 30, 40, 2, 3
Nesse caso, 30 indica uma rotação de 30º em torno do eixo x; 40 indica uma rotação de 40º em torno do eixo z; 2 indica um aumento de 2 vezes na escala geral do gráfico; 3 indica um aumento de 3 vezes na escala do eixo z em relação à escala geral.
Nesse caso, 30 indica uma rotação de 30º em torno do eixo x; 40 indica uma rotação de 40º em torno do eixo z; 2 indica um aumento de 2 vezes na escala geral do gráfico; 3 indica um aumento de 3 vezes na escala do eixo z em relação à escala geral.
No Gnuplot o eixo x é paralelo ao eixo horizontal monitor, com sentido positivo para a direita; o eixo y é paralelo ao eixo vertical do monitor, com sentido positivo para cima; o eixo z é o eixo 'para fora' do monitor (regra da mão direita - sistema dextrogiro).
No Gnuplot o eixo x é paralelo ao eixo horizontal do monitor, com sentido positivo para a direita; o eixo y é paralelo ao eixo vertical do monitor, com sentido positivo para cima; o eixo z é o eixo 'para fora' do monitor (regra da mão direita - sistema dextrogiro).
Para ver isso, basta não fazer nenhuma rotação nos eixos, ou seja:
Para ver isso, basta não fazer nenhuma rotação nos eixos, ou seja:
           gnuplot> set view 0, 0
           gnuplot> set view 0, 0
Linha 227: Linha 241:
           gnuplot> set view 60, 30, 1, 1
           gnuplot> set view 60, 30, 1, 1


* set isosamples
*'''set isosamples'''
Determina o número de isolinhas. Isolinhas são curvas parametrizadas geradas mantendo um dos parâmetros (u ou v) constante e variando o outro. São as curvas que compõe a malha da superfície. Mais curvas implica um gráfico mais preciso, porém que leva mais tempo para ser gerado. Exemplo:
Determina o número de isolinhas. Isolinhas são curvas parametrizadas geradas mantendo um dos parâmetros (u ou v) constante e variando o outro. São as curvas que compõe a malha da superfície. Mais curvas implica um gráfico mais preciso, porém que leva mais tempo para ser gerado. Exemplo:
           gnuplot> set isosamples 60, 30
           gnuplot> set isosamples 60, 30
Linha 233: Linha 247:
           gnuplot> set isosamples 10, 10
           gnuplot> set isosamples 10, 10


* set xyplane
*'''set xyplane'''
Ajusta a posição na qual o plano xy é desenhado num plot 3D. É útil, por exemplo, para o caso em que há uma projeção do gráfico do plano xy porque permite escolher em que 'altura' essa projeção será desenhada. É possível determinar o ajuste em termos absolutos ou relativos. No primeiro caso, temos:
Ajusta a posição na qual o plano xy é desenhado num plot 3D. É útil, por exemplo, para o caso em que há uma projeção do gráfico do plano xy porque permite escolher em que 'altura' essa projeção será desenhada. É possível determinar o ajuste em termos absolutos ou relativos. No primeiro caso, temos:
           gnuplot> set xyplane at 1
           gnuplot> set xyplane at 1
Nesse caso, o plano xy será desenhado em z=1. No segundo caso, temos (recomendado):
Nesse caso, o plano xy será desenhado em z=1. No segundo caso, temos (recomendado):
           gnuplot> set xyplane relative 0.8
           gnuplot> set xyplane relative 0.8
Nesse caso, a posição do plano xy é dada como uma fração da amplitude do eixo z. O valor default equivale a:
Nesse caso, a posição do plano xy é dada como uma fração da amplitude do eixo z. Um comando equivalente a este é:
           gnuplot> set xyplane relative0 .5
          gnuplot> set ticslevel 0.8
O valor default equivale a:
           gnuplot> set xyplane relative 0.5
 
*'''set dummy'''
Por default, gnuplot assume que, para o comando plot, a variável independente é "x" e, em modo polar ou paramétrico, ela é "t".
Para o comando splot, ele assume que as variáveis são "x" e "y" e, em modo paramétrico, "u" e "v" (não é possível utilizar modo polar com splot).
 
Pode ser conveniente alterar o nome de uma variável independente para uma letra convencional ou uma que possua um significado físico. Assim, para fazer "b" a variável independente num plot:
          gnuplot> set dummy b
          gnuplot> plot sin(b), cos(b)
Ou, num splot:
          gnuplot> set dummy f,h
          gnuplot> splot f*h


==Exemplos==
==Exemplos==
Linha 245: Linha 272:
===Script 01===
===Script 01===


[[Arquivo:Script1.jpeg|300px|thumb|right|texto]]
[[Arquivo:Script01.jpeg|250px|thumb|left|Script 01]]


     set nokey
     set nokey
Linha 256: Linha 283:
     pause -1
     pause -1


==Lista de Funções==
===Script 02===
Se alguém pode arrumar vou agradecer!


Function (Arguments) Returned value
[[Arquivo:script02.jpeg|250px|thumb|left|Script 02]]


abs(x) -> valor absoluto de x
    set xrange [-2:2]
    set yrange [-2:2]
    set pm3d
    set nokey
    set isosamples 15,15
    splot exp(-x*x)*exp(-y*y)
    pause -1


acos(x) -> arccosine em radianos
===Script 03===
[[Arquivo:script03.jpeg|250px|thumb|right|Script 03]]
    set xrange [-4:4]
    set yrange [-4:4]
    set pm3d at b
    set xyplane relative 0.8
    set isosamples 30,30
    splot x*x*exp(-x*x)*y*y*exp(-y*y)
    pause -1


<pre>
==Funções==
arg(x) (complex)
{| class="wikitable"
    the phase of x in radians
|+'''Funções da biblioteca math'''
asin(x) (any)
|-
    arcsin in radians
! Função !! Argumento !! Retorno
atan(x) (any)
|-
    arctangent in radians
|abs(x) || qualquer || valor absoluto de x
besj0(x) (radians)
|-
    j_0 bessel function of x  
|abs(x) || complexo || módulo de x
besj1(x) (radians)
|-
    j_1 bessel function of x  
|acos(x) || qualquer || inversa do cosseno
besy0(x) (radians)
|-
    y_0 bessel function of x
|acosh(x) || qualquer || inversa do cosseno hiperbólico
besy1(x) (radians)
|-
    y_1 bessel function of x
|arg(x) || complexo || fase (ou argumento) de x
ceil(x) (any)
|-
    smallest integer not less than real (x)  
|asin(x) || qualquer || inversa do seno
cos(x) (radians)
|-
    cosine x
|asinh(x) || qualquer || inversa do seno hiperbólico
cosh(x) (radians)
|-
    hyperbolic cosine x
|atan(x) || qualquer || inversa da tangente
erf(x) (any )
|-
    Erf(real(x)), error function of real(x)  
|atan2(y,x) || inteiro ou real || inversa da tangente, tan−1 (y/x)  
erfc(x) (any)
|-
    Erfc(real(x)), 1.0 - error function of real(x)  
|atanh(x) || qualquer || inversa da tangente hiperbólica
exp(x) (any)
|-
    exponential function of x
|EllipticK(k) || k ∈ (-1:1) real || integral elíptica completa K(k) de primeiro tipo
floor(x) (any)
|-
    largest integer not greater than real(x)
|EllipticE(k) || k ∈ [-1:1] real || integral elíptica completa E(k) de segundo tipo
gamma(x) (any)
|-
    gamma function of real (x)  
|EllipticPi(n,k) || n<1 real, k ∈ (-1:1) real || integral elíptica completa Π(n, k) de terceiro tipo
ibeta(p,q,x) (any)
|-
    ibeta function of real(p,q,x)  
|besj0(x) || inteiro ou real || função de Bessel j0
igamma(a,x) (any)
|-
    igamma function of real(a,x)  
|besj1(x) || inteiro ou real || função de Bessel j1
imag(x) (complex)
|-
    imaginary part of x
|besy0(x) || inteiro ou real || função de Bessel y0
invnorm(x) (any)
|-
    inverse normal distribution function of real(x)  
|besy1(x) || inteiro ou real || função de Bessel y1
int(x) (real)
|-
    real integer part of x
|ceil(x) || qualquer || menor integral, não menor do que x (parte real)
lgamma(x) (any)
|-
    lgamma function of real(x)  
|cos(x) || qualquer || cos(x)
log(x) (any)
|-
    natural logarithm of x  
|cosh(x) || qualquer || cosseno hiperbólico de x
log10(x) (any)
|-
    logarithm base 10 of x  
|erf(x) || qualquer || função erro de real(x)
norm(x) (any)
|-
    normal distribution (Gaussian) function of real(x)  
|erfc(x) || qualquer || 1.0 - função erro de real(x)
rand(x) (any)
|-
    pseudo random number generator
|exp(x) || qualquer || função exponencial de x
real(x) (any)
|-
    real part of x  
|floor(x) || qualquer || maior integral, não maior que x (parte real)
sgn(x) (any)
|-
    1 if x > 0, -1 if x < 0 , 0 if x = 0 (real part)  
|gamma(x) || qualquer || função gamma de real(x)
sin(x) (radians)
|-
    sine x
|ibeta(p,q,x) || qualquer || função ibeta de real(p,q,x), ibeta(real(p,q,x))
sinh(x) (radians)
|-
    hyperbolic sine x
|inverf(x) || qualquer || inversa da função erro de real(x)
sqrt(x) (any)
|-
    square root of x
|igamma(a,x) || qualquer || função igamma de real(x), igamma(real(a,x))
tan(x) (radians)
|-
    tangent of x
|imag(x) || complexo || parte imaginária de x como um número real
tanh(x) (radians)
|-
    hyperbolic tangent of x
|invnorm(x) || qualquer || inversa de norm(x)
</pre>
|-
|int(x) || real || parte inteira de x, truncada para zero
|-
|lambertw(x) || real || função Lambert W
|-
|lgamma(x) || qualquer || função lgamma de real(x), lgamma(real(x))
|-
|log(x) || qualquer || logaritmo natural de x
|-
|log10(x) || qualquer || logaritmo (base 10) de x
|-
|norm(x) || qualquer || função da distribuição normal (Gaussiana) de real(x)
|-
|rand(x) || qualquer || gerador pseudo-randômico de números
|-
|real(x) || qualquer || parte real de x
|-
|sgn(x) || qualquer || 1 se x>0, -1 se x<0, 0 se x=0. imag(x) ignorada
|-
|sin(x) || qualquer || seno de x
|-
|sinh(x) || qualquer || seno hiperbólico de x
|-
|sqrt(x) || qualquer || raiz quadrada de x
|-
|tan(x) || qualquer || tangente de x
|-
|tanh(x) || qualquer || tangente hiperbólica de x
|}


==Links==
==Links==
[http://www.gnuplot.info/faq/faq.html FAQS]
[http://www.gnuplot.info/faq/faq.html FAQS]

Edição atual tal como às 16h25min de 31 de agosto de 2015

GNUPLOT é um programa para fazer gráficos de livre distribuição. Gnuplot é interativo, mas a comunicação é na linha de comando (sem menus nem uso do mouse). Pode se graficar funções em uma o duas variáveis (mapas de contorno também) definidas dentro dele ou de arquivos de dados externos. O link abaixo contem a documentação completa. Aqui apresentamos tutoriais baseados em exercícios simples.

  • GNUPLOT documentation

Escreva "gnuplot" no seu terminal X (xterm), e verá algo assim na sua tela:

        G N U P L O T
        Version 4.0 patchlevel 0
        last modified Thu Apr 15 14:44:22 CEST 2004
        System: Linux 2.6.18-5-k7

        Copyright (C) 1986 - 1993, 1998, 2004
        Thomas Williams, Colin Kelley and many others

        This is gnuplot version 4.0.  Please refer to the documentation
        for command syntax changes.  The old syntax will be accepted
        throughout the 4.0 series, but all save files use the new syntax.

        Type `help` to access the on-line reference manual.
        The gnuplot FAQ is available from
                http://www.gnuplot.info/faq/

        Send comments and requests for help to
                <gnuplot-info@lists.sourceforge.net>
        Send bugs, suggestions and mods to
                <gnuplot-bugs@lists.sourceforge.net>


Terminal type set to 'x11'

Comandos básicos

Os seguintes exercícios visam a familiarização com o Gnuplot para depois poder fazer os gráficos do seu interesse.

Graficando funções:

  • plot

Esse é o comando para desenhar gráficos 2D. Ele pode graficar ("plotar") a partir de uma função ou de dados lidos de um arquivo. Por exemplo, para graficar a função seno,

           gnuplot> plot sin(x)

Para graficar a função cosseno no mesmo gráfico do seno, utiliza-se, em seguida,

           gnuplot> replot cos(x)

Neste caso, se utilizássemos plot no lugar de replot, então o gráfico da função seno seria perdido.

  • splot

Esse é o comando para desenhar gráficos 3D. Ele pode graficar ("plotar") a partir de uma função ou de dados lidos de um arquivo de maneira muito semelhante ao comando plot. Por exemplo:

           gnuplot> splot x*y

Se quisermos graficar outra curva no mesmo gráfico, utiliza-se o replot em seguida da mesma maneira que em gráficos 2D:

           gnuplot> replot x/y
  • Nomear os eixos
           gnuplot> set xlabel "eixo Y"
           gnuplot> set ylabel "eixo X"
  • Acrescentar o título "SENO e COSENO" e re-desenhar
           gnuplot> set title "SENO e COSENO"
           gnuplot> replot

Atenção: se o gráfico é para ser inserido num relatório, então não colocamos título

  • Legendas: identificar as funções com os nomes "seno(x)" e "coseno(x)" respectivamente
           gnuplot> plot sin(x) title "seno(x)", cos(x) title "coseno(x)"
  • O gnuplot usa autoscale para dados e a escala x: -10, 10 para funções

Podemos alterar os intervalos assim (por exemplo x entre 0 e 5, y entre -3 e 3)

            gnuplot> set xrange [0:5]
            gnuplot> set yrange [-3:3]
  • Ativar a grade
           gnuplot> set grid
           gnuplot> replot
  • Desligar a grade
           gnuplot> unset grid
           gnuplot> replot
  • Passar a coordenadas polares (atenção é uma representação x,y de um gráfico polar (theta,rho=f(theta))
           gnuplot> set title "GRAFICO POLAR"  ! trocar título
           gnuplot> set polar
           gnuplot> plot t
           gnuplot> set trange [0:4*pi] ! mudamos o intervalo do t (variável de ângulo theta)
           gnuplot> replot
           gnuplot> set size square     ! fazer o gráfico quadrado
           gnuplot> replot
  • Salvar a sessão num arquivo
           gnuplot> save "test1.gnu"    ! o .gnu é só por conveniência
  • Sair do Gnuplot
           gnuplot> quit
  • Conferir se foi gravado (fora do Gnuplot, na tela de comandos) e recarregar depois
           $ ls -l *.gnu
           $ gnuplot  ! para entrar de novo
           gnuplot> load "test1.gnu"
           gnuplot> replot
  • Experimente mais (e interprete o resultado):
           gnuplot> plot sin(t)
           gnuplot> plot cos(t)
           gnuplot> plot sin(t), cos(t)
           gnuplot> plot sin(t)*cos(t)
           gnuplot> quit
  • Graficando dados
   1. Crie um arquivo de dados (x,y) com a relacao y=x² entre -5 e 5 e 100 pontos (use 'seq' e 'awk')
   2. Grafique os dados (ex: x2.dat) no gnuplot
           $ gnuplot
           gnuplot> plot "x2.dat"
                
  • Graficando com linha em lugar de pontos
           gnuplot> plot "x2.dat" with line    ! o with line pode ser abreviado para w l
           gnuplot> set style data linespoints ! isto deixa o estilo linha e pontos fixo
           gnuplot> replot
  • Mudando para linha sem pontos
           gnuplot> set style data lines
           gnuplot> replot
  • Escala logarítmica (os dois eixos)
           gnuplot> set log
           gnuplot> replot
  • Voltar a escala linear
           gnuplot> unset log
  • Trocar X com Y
           gnuplot> plot "x2.dat" using 2:1 ! pode ser abreviado para u 2:1)
  • Salvar ps colorido (imprimir ou incluir em LaTex)
           gnuplot> #formato postscript (PS) colorido e de qualidade
           gnuplot> set term postscript enhanced color   
           gnuplot> set output "x2.ps"
           gnuplot> replot
  • Salvar eps colorido (imprimir ou incluir em LaTex)
           gnuplot> #formato postscript encapsulado (EPS) colorido e de qualidade
           gnuplot> set term postscript eps enhanced color   
           gnuplot> set output "x2.eps"
           gnuplot> replot
  • Salvar eps em tons de cinza
           gnuplot> set term postscript eps enhanced monochrome
           gnuplot> set output "x2.eps"
           gnuplot> replot
  • Se queremos o gráfico para inserir num relatório, pode se perceber depois da primeira tentativa que as fontes,

--isto é números e textos que aparecem dentro do gráfico-- ficam muito pequenas no fim. Isto pode ser facilmente concertado com o seguinte truque. Antes de mudar o terminal e a saída, ou seja antes dos passos 20 ou 21, fazer:

            gnuplot> set size 0.5
            gnuplot> replot

Isso escala todo o gráfico num fator 1/2, mas mantendo o tamanho das fontes. O efeito no relatório será o de ver as fontes e símbolos aumentados num fator 2.

  • Após produzir a saída postscript (eps) se quiseres voltar a usar o GNUPLOT normalmente faça
           gnuplot> set output
           gnuplot> set terminal x11

Ajuste de curvas (fit)

Definir uma função

gnuplot> f(x) = a + b*x

Utiliza-la para o ajuste dos dados

gnuplot> fit f(x) "x.dat" via a,b

Resultado:

...
After 6 iterations the fit converged.
final sum of squares of residuals : 3.76358e-28
rel. change during last iteration : 0

degrees of freedom    (FIT_NDF)                        : 98
rms of residuals      (FIT_STDFIT) = sqrt(WSSR/ndf)    : 1.95969e-15
variance of residuals (reduced chisquare) = WSSR/ndf   : 3.84039e-30

Final set of parameters            Asymptotic Standard Error
=======================            ==========================

a               = 10               +/- 3.89e-16     (3.89e-15%)
b               = -3               +/- 6.789e-17    (2.263e-15%)


correlation matrix of the fit parameters:

               a      b
a               1.000
b              -0.864  1.000

Graficando dados e ajuste

gnuplot> plot "x.dat", f(x)

Outros comandos

  • set key

Habilita legendas para as curvas do gráfico. Caso não seja utilizado, por default uma legenda será colocada no canto superior direito do gráfico. No caso de mais de uma curva, as legendas vão sendo colocadas abaixo das anteriores. Para desabilitar as legendas, basta um dos comandos (equivalentes):

         gnuplot> set key off
         gnuplot> unset key
         gnuplot> set nokey
  • set parametric

Coloca em modo paramétrico, ou seja, há uma função para cada eixo. Por exemplo, no caso de uma superfície o comando assume a forma:

         gnuplot> splot x(u,v) y(u,v) z(u,v)
  • set hidden3d

Faz com que as linhas 'de trás' de uma superfície não sejam plotadas. Assim, fica visível apenas a parte externa da figura.

         gnuplot> set hidden3d
  • set view

Controla o ângulo de visão (ou seja, como os eixos estão dispostas na tela) e a escala deles.

         gnuplot> set view 30, 40, 2, 3

Nesse caso, 30 indica uma rotação de 30º em torno do eixo x; 40 indica uma rotação de 40º em torno do eixo z; 2 indica um aumento de 2 vezes na escala geral do gráfico; 3 indica um aumento de 3 vezes na escala do eixo z em relação à escala geral. No Gnuplot o eixo x é paralelo ao eixo horizontal do monitor, com sentido positivo para a direita; o eixo y é paralelo ao eixo vertical do monitor, com sentido positivo para cima; o eixo z é o eixo 'para fora' do monitor (regra da mão direita - sistema dextrogiro). Para ver isso, basta não fazer nenhuma rotação nos eixos, ou seja:

         gnuplot> set view 0, 0

Caso o comando não seja utilizado, o valor estabelecido por default equivale a:

         gnuplot> set view 60, 30, 1, 1
  • set isosamples

Determina o número de isolinhas. Isolinhas são curvas parametrizadas geradas mantendo um dos parâmetros (u ou v) constante e variando o outro. São as curvas que compõe a malha da superfície. Mais curvas implica um gráfico mais preciso, porém que leva mais tempo para ser gerado. Exemplo:

         gnuplot> set isosamples 60, 30

O valor default equivale a:

         gnuplot> set isosamples 10, 10
  • set xyplane

Ajusta a posição na qual o plano xy é desenhado num plot 3D. É útil, por exemplo, para o caso em que há uma projeção do gráfico do plano xy porque permite escolher em que 'altura' essa projeção será desenhada. É possível determinar o ajuste em termos absolutos ou relativos. No primeiro caso, temos:

         gnuplot> set xyplane at 1

Nesse caso, o plano xy será desenhado em z=1. No segundo caso, temos (recomendado):

         gnuplot> set xyplane relative 0.8

Nesse caso, a posição do plano xy é dada como uma fração da amplitude do eixo z. Um comando equivalente a este é:

         gnuplot> set ticslevel 0.8

O valor default equivale a:

         gnuplot> set xyplane relative 0.5
  • set dummy

Por default, gnuplot assume que, para o comando plot, a variável independente é "x" e, em modo polar ou paramétrico, ela é "t". Para o comando splot, ele assume que as variáveis são "x" e "y" e, em modo paramétrico, "u" e "v" (não é possível utilizar modo polar com splot).

Pode ser conveniente alterar o nome de uma variável independente para uma letra convencional ou uma que possua um significado físico. Assim, para fazer "b" a variável independente num plot:

         gnuplot> set dummy b
         gnuplot> plot sin(b), cos(b)

Ou, num splot:

         gnuplot> set dummy f,h
         gnuplot> splot f*h

Exemplos

Script 01

Script 01
    set nokey
    set parametric
    set hidden3d
    set view 65, 340
    set isosamples 60, 40
    splot  [0:3*pi][-pi:pi] cos(u)*(u/(3*pi)*cos(v)+2), \
    sin(u)*(u/(3*pi)*cos(v)+2), u*sin(v)/(3*pi)
    pause -1

Script 02

Script 02
    set xrange [-2:2]
    set yrange [-2:2]
    set pm3d
    set nokey
    set isosamples 15,15
    splot exp(-x*x)*exp(-y*y)
    pause -1

Script 03

Script 03
    set xrange [-4:4]
    set yrange [-4:4]
    set pm3d at b
    set xyplane relative 0.8
    set isosamples 30,30
    splot x*x*exp(-x*x)*y*y*exp(-y*y)
    pause -1

Funções

Funções da biblioteca math
Função Argumento Retorno
abs(x) qualquer valor absoluto de x
abs(x) complexo módulo de x
acos(x) qualquer inversa do cosseno
acosh(x) qualquer inversa do cosseno hiperbólico
arg(x) complexo fase (ou argumento) de x
asin(x) qualquer inversa do seno
asinh(x) qualquer inversa do seno hiperbólico
atan(x) qualquer inversa da tangente
atan2(y,x) inteiro ou real inversa da tangente, tan−1 (y/x)
atanh(x) qualquer inversa da tangente hiperbólica
EllipticK(k) k ∈ (-1:1) real integral elíptica completa K(k) de primeiro tipo
EllipticE(k) k ∈ [-1:1] real integral elíptica completa E(k) de segundo tipo
EllipticPi(n,k) n<1 real, k ∈ (-1:1) real integral elíptica completa Π(n, k) de terceiro tipo
besj0(x) inteiro ou real função de Bessel j0
besj1(x) inteiro ou real função de Bessel j1
besy0(x) inteiro ou real função de Bessel y0
besy1(x) inteiro ou real função de Bessel y1
ceil(x) qualquer menor integral, não menor do que x (parte real)
cos(x) qualquer cos(x)
cosh(x) qualquer cosseno hiperbólico de x
erf(x) qualquer função erro de real(x)
erfc(x) qualquer 1.0 - função erro de real(x)
exp(x) qualquer função exponencial de x
floor(x) qualquer maior integral, não maior que x (parte real)
gamma(x) qualquer função gamma de real(x)
ibeta(p,q,x) qualquer função ibeta de real(p,q,x), ibeta(real(p,q,x))
inverf(x) qualquer inversa da função erro de real(x)
igamma(a,x) qualquer função igamma de real(x), igamma(real(a,x))
imag(x) complexo parte imaginária de x como um número real
invnorm(x) qualquer inversa de norm(x)
int(x) real parte inteira de x, truncada para zero
lambertw(x) real função Lambert W
lgamma(x) qualquer função lgamma de real(x), lgamma(real(x))
log(x) qualquer logaritmo natural de x
log10(x) qualquer logaritmo (base 10) de x
norm(x) qualquer função da distribuição normal (Gaussiana) de real(x)
rand(x) qualquer gerador pseudo-randômico de números
real(x) qualquer parte real de x
sgn(x) qualquer 1 se x>0, -1 se x<0, 0 se x=0. imag(x) ignorada
sin(x) qualquer seno de x
sinh(x) qualquer seno hiperbólico de x
sqrt(x) qualquer raiz quadrada de x
tan(x) qualquer tangente de x
tanh(x) qualquer tangente hiperbólica de x

Links

FAQS