Escolar Documentos
Profissional Documentos
Cultura Documentos
Fevereiro, 2014
Sumário
1 Introdução 3
1.1 O que é Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Instalando o Gnuplot - Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Comandos de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Plotando Gráficos 6
2.1 Funções Intrı́nsecas e Externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Arquivo de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Editando labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Editando o incremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5 Editando o alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6 Editando a caixa de legenda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6.1 Tı́tulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6.2 Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.6.3 Posição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7 Fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.8 Tı́tulo do gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1
4.3 Disposição dos gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Arquivos de Saı́da 26
5.1 PDF,JPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6 Script GNU 27
6.1 Exemplo - Multiplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2
Capı́tulo 1
Introdução
3
1.2 Instalando o Gnuplot - Linux
Antes de tudo abra o terminal pelo comando ”CTRL+shift+t”. Verifique se você possuı́
uma senha definida para usuário root, caso não tenha, faça como se segue na figura abaixo.
Se você estiver utilizando o Ubuntu 11.10 Oneiric Oncelot, provavelmente será instalado o
Gnuplot 4.4 Patchlevel 3. Pode-se conferir digitando no terminal:
gnuplot –version.
Gnuplot não possuı́ interface gráfica, funciona através do terminal, para abri-lo basta dar
o comando: gnuplot. Pode-se também executar diretamente um script já preparado: gnuplot
script.gnu. Este último será discutido em maiores detalhes nos capı́tulos seguintes.
4
1.3 Comandos de Controle
Como visto na seção anterior, o Gnuplot é aberto pelo terminal. Quando queremos plotar um
gráfico a partir de um arquivo de dados precisamos fornecer o diretório completo do arquivo,
ao menos que o mesmo se encontre na diretório de trabalho do Gnuplot, neste caso, apenas o
nome do arquivo é necessário. O comando gnuplot> pwd fornece a pasta atual de trabalho.
Para abrir o Gnuplot na pasta de trabalho desejada, acesse-a primeiramente pelo terminal
utilizando o comando cd, depois abra o Gnuplot normalmente.
É possı́vel mudar a pasta de trabalho atual do Gnuplot por um comando similiar ao do
terminal: gnuplot> cd ’/diretorio/’. Adiciona-se aspas simples entre o diretório.
Outros três comandos muito utilizados são: unset, show e help. O primeiro desfaz qualquer
declaração, como tı́tulos, labels e etc (estará mais claro nos capı́tulos seguintes). O segundo
fornece a configuração atual dos tı́tulos, labels e etc. O terceiro fornece um tutorial sobre o
comando em si. Exemplos:
O caracter # (hashtag) denota comentário e portanto o que vier a seguir na linha é ignorado
pelo compilador do Gnuplot.
5
Capı́tulo 2
Plotando Gráficos
6
É possı́vel também declarar uma função qualquer.
gnuplot> f (x) = x ∗ ∗2 + 2 ∗ x
Para plotar basta dar o mesmo comando, se referindo desta vez a já definida f (x).
Muitas vezes precisamos comparar o comportamento de duas curvas. Para tal, basta que
separemos os dois plots por uma (,).
Veremos mais tarde como editar as configurações do plot, como o nome das labels, tı́tulo,
cor, localização da caixa de legenda e etc.
Este é um arquivo que contém dados dispostos em 3 diferentes colunas. A forma com a
qual o Gnuplot o interpreta que importa. Para cada coluna é atribuı́da uma diferente variável.
Diferente de plotar uma função, precisamos fornecer ao gnuplot o papel de cada coluna nos
7
diferentes eixos de coordenadas. Observe o seguinte comando:
Por exemplo, em 2D, vamos definir a segunda coluna de dados para representar o eixo das
abscissas e a terceira o eixo das ordenadas. Para isto, declara-se o seguinte na linha de comando
do Gnuplot:
Estamos dizendo ao Gnuplot que os dados da coluna 2 serão representados pelo eixo das
abscissas e os dados da coluna 3 pelo eixo das ordenadas. Podemos fazer com que os dados
da primeira coluna sejam representados pelo eixo das abscissas e os da segunda pelo eixo das
ordenadas e vice-versa. Caso a opção seja omitida, Gnuplot interpretará automaticamente
como using 1:2 .
8
2.3 Editando labels
Se você plotar um gráfico através de seu arquivo de dados você reparará que as labels (eixos)
não estarão nomeados, isto ocorre por padrão. Para mudar esta situação é preciso fornecer à
linha de comando o seguinte:
Lembre-se, podemos separar dois comandos por (;). Agora veja como ficaria a figura 2.2 se
nomeássemos o eixo y como sin(x) e o eixo x como simplesmente x.
gnuplot> set xtics < value >; set ytics < value >
9
2.5 Editando o alcance
Novamente observe a figura 2.4 ou 2.2, no eixo das abscissas, no caso x, os valores se limi-
tam de -10 a 10, enquanto que no eixo das ordenadas, no caso y, se limitam de -1 a 1. Estas
configurações foram geradas automaticamente pelo comportamento da função plotada. Para
editar o alcance declara-se, antes do plot:
Por exemplo:
10
gnuplot> set key {title "< text >"} {on|off} {inside|outside} {(no)box}
{left|center|right} {top|bottom|center} {samplen < sample lenght >}
{width ”width increment”} {height ”height height”}
Há ainda outras opções, porém estas são mais importantes. Os argumentos on e of f ligam
e desligam a caixa de legendas.
2.6.1 Tı́tulo
A primeira title define o nome da caixa de legendas. Por padrão o Gnuplot omite. Veja este
exemplo:
11
2.6.2 Box
Para fins estéticos, pode-se adicionar uma borda a caixa de legenda, ou removê-lo.
Para removê-lo, basta declarar gnuplot > set key no box e a caixa voltará ao normal.
2.6.3 Posição
Muitas vezes é preferı́vel que a caixa de legenda esteja posicionada em locais diferentes do
gráfico. Veja a figura 2.6, claramente vemos que a curva e a caixa se confundem. Estes fatores
causam dificuldade na leitura. Há formas de posicionar a caixa dentro e fora do gráfico, à
esquerda, direita ou centralizada. Segue o comando abaixo:
Para fins ilustrativos, vamos colocar a caixa de legenda à direita, com o argumento box,
com tı́tulo definido e fora de nosso gráfico.
12
Observaremos o seguinte:
gnuplot> set key box right bottom outside title ’Funcoes Trigonometricas’
gnuplot> plot cos(x), sin(x)
13
2.7 Fonte
Pode-se alterar o tipo e o tamanho da fonte de todos os argumentos que aparecem no gráfico:
xlabel,ylabel, xtics, ytics, title e key. Este último refere-se ao tamanho do nome da curva
e do tı́tulo da caixa de legenda (ver Cap 3.1). O comando geral é:
Exemplo:
14
2.8 Tı́tulo do gráfico
Para definir ao seu gráfico um tı́tulo utilize:
15
Capı́tulo 3
No capı́tulo 2 vimos como plotar a curva de uma dada função e a partir de um arquivo de
dados. Aprendemos as principais edições que podem ser realizadas ao gráfico. Agora veremos
como nomear a curva, editar a cor e escolher entre usar linhas ou pontos. A forma geral com
alguns argumentos omitidos é:
Repare que a vı́rgula neste caso faz a função de plotar duas curvas em um mesmo gráfico.
16
Figura 3.1: Definindo tı́tulo às curvas.
17
Vejamos a diferença destas configurações para um dado arquivo de saı́da:
with lines:
with points:
18
with dots:
Neste último mal podemos visualizar o formato da curva, esta configuração é melhor para
situações em que temos uma maior quantidade de dados.
Para os dois primeiros casos: lines e points, podemos formatar cor e tamanho (dots apenas
muda o primeiro).
Mesmo levando o nome linecolor, este argumento também funciona para dots e points.
Veja este exemplo:
19
Figura 3.5: Plot sin(x) com cor alternativa.
Sim, as cores são definidas por números, e portanto, é necessário consultar a seguinte
tabela:
Estes diferentes sı́mbolos que aparecem do lado direito dos números podem ser escolhidos
20
utilizando-se do argumento linestyle e deve ser aplicado apenas com with points.
Para uma apresentação do seu trabalho, a curva deve estar bem evidente. Para aumentar a
largura da linha utiliza-se:
21
Capı́tulo 4
Como visto no capı́tulo anterior, podemos plotar duas diferentes curvas em um mesmo
gráfico. No entanto, dependendo do formato da curva, o gráfico resultante pode parecer des-
ordenado, com visualização dificultada. Uma alternativa é gerá-los numa disposição de uma
tabela. Pode-se dispor um gráfico do lado do outro, um embaixo do outro, todos em uma
mesma figura, página ou janela. Utiliza-se o comando multiplot, que tem a seguinte forma:
Uma janela se abrirá, significando que você agora está no ambiente multiplot. Atenção,
para definir estes argumentos ao multiplot, deve-se também executá-los em uma única linha.
22
4.1 Tı́tulo e Fonte
Como explicado, uma janela em branco se abrirá após a entrada no ambiente multiplot,
agora você pode editá-lo de várias formas. Desta vez para inserir um tı́tulo e editar a fonte,
devemos fazer uma única declaração, não podendo ser divida em duas. De fato, pode-se definir
um tı́tulo sem especificar a fonte, mas nunca ao contrário. Segue o exemplo:
23
4.2 Layout
Agora um exemplo de como podemos plotar vários gráficos em uma mesma tela, imagem ou
página. Seja o seguinte comando:
Repare neste outro detalhe, há uma ordem em que os gráficos foram inseridos. Primeira-
mente plotei a função cosseno, depois seno, tangente e então a função logarı́tmica na base e. Os
gráficos foram inseridos de forma que se preencheu primeiramente as linhas, de cima a baixo.
24
4.3 Disposição dos gráficos
Para mudar a ordem com a qual os gráficos serão dispostos utilizamos os últimos dois argu-
mentos explicitados no começo deste capı́tulo. Para que sejam inseridos preenchendo primeira-
mente as colunas usa-se columnsf irst, para linhas rowsf irst. Por padrão o gnuplot insere
primeiro as linhas, de cima para baixo (rowsf irst e downwards). Vamos agora mudar com-
pletamente a forma com a qual são dispostos os gráficos para verificar o resultado.
25
Capı́tulo 5
Arquivos de Saı́da
5.1 PDF,JPG
É inegável a importância de se armazenar um gráfico na memória do computador, pendrive,
cd e etc. Muito foi explicado sobre como editar e plotar, mas nada sobre como salvar um gráfico
em um formato e tamanho especı́fico. Para tal, usa-se os seguintes comandos:
A primeira declaração informa ao Gnuplot que a imagem a ser salva estará no formato
especificado. A segunda informa o nome do arquivo. Atenção, a extensão .jpeg e .pdf é
obrigatória ao final do nome do arquivo. Para pdf, size será definido em inch, ou in (polegadas),
em jpeg size será definido em pixels.
Exemplo:
26
Capı́tulo 6
Script GNU
Até agora vimos as declarações mais importantes para edição de gráficos no Gnuplot. Com
o tempo você verá que ficará cansativo fornecer ao Gnuplot, todas as vezes, tantas declarações.
Para resolver este problema criamos scripts prontos que contém todos os comandos necessários.
Desta forma você poderá visualizar mais facilmente todas as opções escolhidas. A estrutura
do script é basicamente composta por todos os comandos que você digitaria antes de plotar o
seu gráfico, somado com o comando de plot. Vejamos um exemplo:
# Gnuplot
set terminal pdf
set output ’cic-presentation1.pdf’
set xlabel ’Tempo (anos)’; set ylabel ’Obliquidade - Plutao (graus)’
set title ’Comparando com Dobrovolskis et al. (1997)’
set xtics 2000000
27
O caractere # caracteriza a linha como comentário, ou seja, tudo que vier em seguida será
ignorado pelo compilador do Gnuplot. Para executar um script, o código deve ser escrito em
um arquivo de texto qualquer, de preferência crie com uma extensão intituiva, por exemplo,
’grafico.gnu’.
Criado o arquivo de texto, dê o seguinte comando no terminal do linux (atenção, não abra
o gnuplot):
28
6.1 Exemplo - Multiplot
Em um arquivo de dados temos os seguintes valores:
O que pode ser visto na figura é apenas uma fração dos dados. Em suma, a coluna 1 é
o tempo em anos, a coluna 3 nos fornece um ângulo que representa a precessão de um dado
planeta (h de Andoyer) e a coluna 7 a obliquidade (Epsilon). Deseja-se plotar 2 gráficos, um
abaixo do outro, com os eixos nomeados de forma correta.
Vamos definir uma fonte que seja ideal e inserir a caixa de legendas em um local apropriado,
para cada gráfico. O resultado deve ser gravado em eps. Antes de tudo, declarar o terminal,
o output e o ambiente multiplot com seus respectivos argumentos.
29
Script:
30
Executando o scritp geramos:
31
Capı́tulo 7
E uma pasta será criada exatamente no mesmo lugar que o programa foi executado.
32
7.2 Exemplo: Programa pronto
A seguinte rotina tem a função de, através de uma variável caractere que é fornecida pelo
programa principal, gerar um script gnu, executá-lo e organizar os gráficos de saı́da em pastas.
! Proposta:
! O programa escreve um algoritmo num arquivo de extens~
ao ’.gnu’, que
! tem como funç~
ao gerar 3 gráficos ’.pdf’. A princı́pio, o programa foi
! escrito em fortran 90/95, porém pode ser convertido facilmente para
! fortran 77. Funciona de complemento para o programa:
! - PLAN-D-02-JULHO-13.FOR
! Alguns recursos foram adicionados ao programa:
! - O arquivo gnu é executado automaticamente, gerando os 3 gráficos.
! - Converte os arquivos pdf --> jpg.
! - Cria uma pasta e move os arquivos jpg, pdf e dat referentes à
! saı́da de integraç~
ao e às condiç~
oes iniciais do satélite.
!
! Manual de variáveis:
! - f name: string referente ao arquivo da saı́da de integraç~
ao do
! programa principal a ser executado. O nome do arquivo gnu depende
! desta variável.
! - PLOT 1,2,3: Refere-se diretamente ao nome da variável a ser
! plotada. O tı́tulo, o nome do arquivo pdf e jpg depender~
ao automati-
! camente desta string (ver programa).
! - K 1,2,3: Coluna onde está contida a variável 1,2,3.
! - Todas as outras variáveis est~
ao explicadas por si só.
!
! Registro de revis~
oes:
!
! Data Programador Descriç~
ao da mudança
! ==== =========== ==================
! 15/01/2015 L. D. S. Trotta Código original
33
IMPLICIT NONE
! Declarando variáveis:
CHARACTER(30) :: f name ! Referente ao arquivo output
CHARACTER(40) :: gnuplot ! Referente ao arquivo .gnu
! Variáveis.
CHARACTER(30), PARAMETER :: PLOT 1=’h-andoyer’
CHARACTER(30), PARAMETER :: PLOT 2=’OBLIQUIDADE’
CHARACTER(30), PARAMETER :: PLOT 3=’INCL SAT’
34
! Nome dos plot’s em jpg - GNU
CHARACTER(30), PARAMETER :: PLOT 1 JPG = TRIM(PLOT 1) // ’.jpg’
CHARACTER(30), PARAMETER :: PLOT 2 JPG = TRIM(PLOT 2) // ’.jpg’
CHARACTER(30), PARAMETER :: PLOT 3 JPG = TRIM(PLOT 3) // ’.jpg’
! Plot 1.
WRITE(111,*) ’ # ’,PLOT 1,’#’
WRITE(111,*) "set output ’"//TRIM (PLOT 1 PDF)//"’"! set output.
WRITE(111,*) "set title ’"//TRIM(PLOT 1 T)//"’"! set title.
WRITE(111,*) ’set xlabel ’,xlabel ! set xlabel
WRITE(111,*) ’set ylabel ’,ylabel 1 ! set ylabel
WRITE(111,*) "plot ’"// TRIM ( f name ) // "’ using 1:"// K1 //
+ "title ’"// TRIM ( PLOT 1 ) // "’"! PLOT
! Plot 2.
WRITE(111,*) ’ # ’,PLOT 2,’#’
WRITE(111,*) "set output ’"//TRIM (PLOT 2 PDF)//"’"! set output.
WRITE(111,*) "set title ’"//TRIM(PLOT 2 T)//"’"! set title.
WRITE(111,*) ’set xlabel ’,xlabel ! set xlabel
WRITE(111,*) ’set ylabel ’,ylabel 2 ! set ylabel
WRITE(111,*) "plot ’"// TRIM ( f name ) // "’ using 1:"// K2 //
+ "title ’"// TRIM ( PLOT 2 ) // "’"! PLOT
! Plot 3.
WRITE(111,*) ’ # ’,PLOT 3,’#’
35
WRITE(111,*) "set output ’"//TRIM (PLOT 3 PDF)//"’"! set output.
WRITE(111,*) "set title ’"//TRIM(PLOT 3 T)//"’"! set title.
WRITE(111,*) ’set xlabel ’,xlabel ! set xlabel
WRITE(111,*) ’set ylabel ’,ylabel 3 ! set ylabel
WRITE(111,*) "plot ’"// TRIM ( f name ) // "’ using 1:"// K3 //
+ "title ’"// TRIM ( PLOT 3 ) // "’"! PLOT
36
Referências
37