Gnuplot para a disciplina Cálculo Numérico
Desenvolvido a partir de 1986, o gnuplot é uma ferramenta opensource no
estilo linha de comando para plotar gráficos. Nesse documento você
encontrará algumas informações básicas para plotar os gráficos para a
disciplina DIM0040 Cálculo Numérico.
Após inicializar o gnuplot (digitando gnuplot no terminal do linux),
uma linha de comando aparecerá, esperando que o usuário digite algum
comando. O gnuplot possui vários parâmetros de configurações que podem
ser ajustados, como por exemplo, os limites visualizáveis do plano
cartesiano que são utilizados, o estilo da linha do gráfico, a
quantidade de pontos a serem utilizadas para plotar um gráfico.
Para plotar um gráfico bidimensional utilize o comando plot. Por exemplo:
plot x*x - 2*x + 1
irá plotar o gráfico de f(x) = x² - 2x + 1
Para plotar mais uma função, basta separá-las por vírgula:
plot x*x - 2*x + 1, 2*x + 1
irá plotar os gráficos de f(x) = x² - 2x + 1 e f(x) = 2x + 1 em uma mesma janela
Salvando o gráfico em uma imagem
Forma prática:
set terminal png; set output "imagem.png"; replot; set terminal wxt;
onde imagem.png é o nome do arquivo que você quer salvar (a imagem será salva na mesma pasta onde você abriu o gnuplot).
Expressões no gnuplot
As expressões matemáticas no gnuplot são bem parecidas com as aplicadas
em uma calculadora científica. As quatro operações básicas são feitas
por +, -, *, /.
Mas atenção: na divisão, caso tanto o numerador como o denominador
forem números inteiros, a divisão é inteira. Dessa forma, 7/2 resulta
em 3 e não em 3.5. Para evitar a divisão inteira, basta mudar o numerador para número real. Por exemplo: 7.0/2.
Alterando a janela de visualização do gnuplot
Quando você plota um gráfico bidimensional, uma região do plano
cartesiano é exibido na tela, delimitando o intervalo de visualização
do eixo x e do eixo y. Para alterar esses intervalos, utilize os
comandos set xrange e set yrange. Por exemplo, para delimitar a visualização no eixo x entre -5 e 6 e no eixo y entre -7 e 8, entre com os seguintes comandos:
set xrange[-5:6]
set yrange[-7:8]
Lendo os comandos a partir de um arquivo ao invés da linha de comando:
Você pode, opcionalmente, escrever todos os comandos em um arquivo e
executá-los no gnuplot. Recomendo que você utilize essa forma de
trabalhar, pois digitar comando após comando na linha de comando do
gnuplot é mais difícil de visualizar o que está sendo feito e também
mais difícil corrigir o que estiver errado. Há duas formas de fazer isso:
1. Se você estiver ainda no terminal, pode abrir o gnuplot dessa forma:
gnuplot nomedoarquivo.gp
mas atenção: caso seja realizado um plot para
exibir na tela, a janela será aberta e imediatamente fechada, recomendo
esse caso somente para o caso em que você queira já salvar a imagem em
um arquivo.
2. Se você estiver na linha de comando do gnuplot, pode fazê-lo dessa forma:
load "nomedoarquivo.gp"
Carregando pontos salvos em um arquivo
Suponha que você tenha vários pontos armazenados em um arquivo no seguinte formato:
x0 y0
x1 y1
x2 y2
...
xn yn
Para plotar os pontos, basta chamá-lo no comando do plot com o nome do arquivo entre aspas. Por exemplo:
plot "nomedoarquivocompontos.pts"
Observe que você pode continuar plotando pontos de outros arquivos e
funções junto com o comando plot, desde que, separando-os por vírgula.
Por exemplo:
plot "pontos1.pts", x*x - 2*x + 1, "pontos2.pts", 2*x+1
irá plotar os pontos que estão no arquivo pontos1.pts, o gráfico
de f(x) = x² - 2x + 1, os pontos que estão no arquivo pontos2.pts e o
gráfico de f(x) = 2x +1.
Adicionando um grid e modificando o número de indicações nos eixos
Para adicionar um grid no gráfico entre com o comando set grid
Para mudar o número de linhas no grid (assim como o número de indicações nos eixos), utilize o comando set xtics e set ytics.
Por exemplo:
set xtics 1
set ytics 1
Adicionando o eixo x e o eixo y
Basta entrar com os comandos:
set xzeroaxis
set yzeroaxis
Modificando o estilo da linha de uma função
Para mudar a cor da linha que está sendo plotada basta acrescentar ao final da função lc númerodacor (lc é a abreviação de linecolor)
Linha com pontos: acrescente with lp (lp é a abreviação de linespoints)
plot x*x - 2*x + 1 with lp
Mudar o estilo dos pontos na linha: acrescente ls númerodoestilo (ls é a abreviação de linestyle)
plot x*x - 2*x + 1 with lp ls 2
Mudar a espessura: acrescente lw espessuradalinha (lw é a abreviação de lineweight)
Preenchendo uma função
Pode-se preencher uma função acrescentando ao final da função with filledcurve y1 = 0
Para modificar o estilo de preenchimento, utilize o comando set style fill pattern númerodoestilo (há vários estilos de preenchimento, recomendo o número 5)
Plotando uma função somente em um intervalo específico
Para plotar uma função somente em um intervalo específico, digamos de A até B, faça dessa forma (onde A = 1 e B = 3):
plot x >= 1 && x <= 3 ? x*x - 2*x + 1 : 1/0 with filledcurve
A interpretação é a seguinte:
plot condição ? F1 : F2 with filledcurve
a interrogação significa um
condicional. O gnuplot irá plotar F1 caso a condição seja verdadeira e
irá plotar F2 caso a condição seja falsa. Para que seja plotada a
função somente no intervalo [A, B] (a condição é expressa por x >= A
&& x <= B), F2 é definido como 1/0 (um dividido por zero, ou
seja, infinito, que não é plotado no gráfico).
Outro exemplo: quero plotar um gráfico com o segmento de reta entre os
pontos (1, 3) e (4, 7). Utilizando a interpolação de newton:
plot x >= 1 && x <= 4 ? 3 + (x - 1)*(4.0/3) : 1/0
Modificando a legenda
Pode-se modificar a legenda de uma função acrescentando ao final da função title "sualegenda". Por exemplo:
plot x*x - 2*x + 1 with filledcurve title "funcao dada"
Atenção: na versão instalada nos laboratórios, o gnuplot não suporta acentos
Modificando o número de amostras utilizadas para plotar a função
Os gráficos do gnuplot são criados a partir da avaliação da função em alguns pontos. Experimente o seguinte:
reset
set samples 5
plot x*x
Observe que a curva da função ficou com muitos cantos, pois o número de
amostras utilizadas para plotar o gráfico foi apenas 5. Às vezes é
necessário aumentar o número de amostras (sugiro colocar 1000).
Sequência de comandos básicos antes de gerar o gráfico
reset
set xrange[A:B] //obviamente, você irá alterar aqui para o intervalo desejado
set yrange[C:D]
set xtics 1
set ytics 1
set samples 1000
set style fill pattern 5
set xzeroaxis
set yzeroaxis
set grid
Criando funções:
Você pode criar funções, como ilustra o seguinte exemplo:
f(x) = x*x + 2x
Após isso, sempre que nos referirmos à f(x), estamos nos referindo a essa função acima. Por exemplo:
plot f(x) title "minha funcao"
Limpando o gráfico:
Para limpar o gráfico utilize o comando clear.
Todos os plots no gráfico são apagados, porém várias outras variáveis
(estilo de preenchimento, escala, eixos, etc) são mantidas.
Comando em várias linhas:
Você pode utilizar várias linhas para um único comando, colocando \ ao final de cada linha. Por exemplo:
plot x,\
x*x+2x,\
3+x*x,\
x+3
Adicionando plots ao gráfico atual:
Para adicionar novos plots (pontos, funcoes) ao gráfico atual, utilize o comando replot. Por exemplo:
plot x
replot x*x+2x
Nesse exemplo acima, a função x é plotada no primeiro comando e
o segundo comando utiliza o mesmo gráfico para plotar uma segunda
função (o gráfico fica com as duas funções). Dessa forma temos no mesmo
gráfico os dois plots. Se o mesmo fosse realizado dessa forma:
plot x
plot x*x+2x
Com o segundo comando, o primeiro plot é apagado (o gráfico fica somente com a segunda função).
Outros comandos úteis:
reset: caso você queira voltar aos parâmetros padrões do gnuplot.
quit: para sair do gnuplot e voltar ao terminal do linux
save "nomedoarquivo.gp": salva todos os parâmetros e o comando do último plot no arquivo de extensão .gp.