O gnuplot é uma ferramenta muito útil para desenhar gráficos de maneira muito simples e direta. O gnuplot é uma ferramenta de código aberto e pode ser utilizada em qualquer sistema operacional.
A interface do gnuplot é baseada em console, isto é, toda a configuração do gráfico deverá ser realizada através de comandos no aplicativo, consequentemente, não há interface com o mouse.
Neste artigo, será feita uma introdução à ferramenta, ao modo de instalação e um tutorial de como gerar os gráficos, desde os mais simples até os tridimensionais.
A obtenção dos arquivos com o código fonte e a instalação podem ser feitas com os comandos abaixo:
# wget http://ufpr.dl.sourceforge.net/project/gnuplot/gnuplot/4.4.4/gnuplot-4.4.4.tar.gz # tar -xvf gnuplot-4.4.4.tar.gz | tar -xvf - # cd gnuplot-4.4.4 # configure # make install |
Após esta etapa, a aplicação será compilada e instalada no sistema operacional. Para assegurar que a aplicação foi gerada corretamente, pode-se executar o seguinte comando e verificar se o gráfico gerado está de acordo com o que deveria:
# gnuplot -e "plot sin(x)" |
Neste caso, deve aparecer um gráfico da função seno(x) na tela.
É importante lembrar que muitas distribuições Linux contém o gnuplot no repositório de programas, e bastaria instalá-lo utilizando os comandos de gerenciamento de pacote da distro em questão.
Como dito acima, o gnuplot não tem uma interface gráfica, pois esta aplicação não é do tipo WYSIWYG (What You See Is What You Get). Isso significa que o usuário precisa programar o gráfico antes de vê-lo.
Para iniciar o software, basta executar o comando gnuplot e aparecerá uma tela conforme a Figura 1.
# gnuplot
G N U P L O T
Version 4.4 patchlevel 0
last modified March 2010
System: Linux 3.0.0-rc1+
Copyright (C) 1986-1993, 1998, 2004, 2007-2010
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs, etc: type "help seeking-assistance"
immediate help: type "help"
plot window: hit 'h'
Terminal type set to 'wxt'
>
|
Figura 1: Boas vindas do gnuplot
Após inicializado o software, já é possível digitar os comandos que se deseja executar. Os comandos mais simples são os que imprimem funções matemáticas, como seno, cosseno, tangente, etc.
Gráficos a partir de funções matemáticas
Nesta seção será será mostrado como gerar o gráfico da função matemática seno. Para gerar qualquer gráfico (em duas dimensões), deve-se utilizar o comando plot, e como argumento a função que deseja-se imprimir no gráfico. Por exemplo, a linha abaixo desenhará o gráfico do seno, como visto na Figura 2.
> plot sin(x) |
Figura 2: Resultado do comando plot sin(x)
Também é possível gerar mais de uma função por gráfico. Para tanto, basta separar as funções por vírgula, conforme o exemplo abaixo. Neste exemplo, são gerados os gráficos das funções seno, cosseno, logaritmo e a função linear com base no X. O resultado pode ser visto na na Figura 3.
> plot sin(x), cos(x), log(x), x/2 |
Figura 3: Múltiplas funções no gráfico
Gráficos a partir de arquivos
Além dos gráficos de formulas matemáticas, o gnuplot é muito conhecido por ser capaz de desenhar excelentes gráficos a partir de arquivos externos de uma maneira ágil. Um exemplo clássico é mostrar um gráfico a partir de um arquivo texto com vários números.
Para tanto, será gerado um arquivo texto contendo os números de 1 a 100. O arquivo foi gerado utilizando o seguinte script (em bash):
for i in `seq 100`
do
echo $i >> tmp.txt
done
|
Para gerar o gráfico baseado em um arquivo com dados, basta utilizar o nome do arquivo entre aspas duplas, conforme a seguir:
> plot "tmp.txt" |
Essa diretiva imprimirá no gráfico os pontos que estão no arquivo. Note que no eixo X tem-se a posição do ponto no arquivo, assim sendo, o arquivo primeiro ponto, será (1,1), o segundo (2,2) e assim por diante.
Figura 4: Gráfico baseado em um arquivo de pontos
No exemplo anterior, o arquivo de dados continha apenas uma dimensão. É possível gerar gráficos com mais de uma dimensão. Neste exemplo, foi criado um arquivo bem simples que contem um conjunto de pares separados por espaço, que representa os pontos (1,2), (2,4), (3,8), (4,10), (6,2), (7,4) e (8.3). Segue o conteúdo do arquivo:
1 2 2 4 3 8 4 10 6 2 7 4 8 3 |
Para gerar o gráfico, o mesmo procedimento deverá ser utilizado, porém neste caso, seria interessante ligar os pontos com uma linha, e para tanto, será utilizado a diretiva with lines, que significa que os pontos serão ligados através de uma linha. Note que pode-se utilizar outras diretivas para gerar outros tipos de ligações, como por exemplo, curvas de bezier.
> plot "tmp.txt" with lines |
Figura 5: Gráfico com arquivo de entrada em duas dimensões
O resultado poderá ser visto na Figura 5.
Além do mais, é possível gerar gráficos em três dimensões, de uma maneira fácil e prática.
O primeiro exemplo é um gráfico de malha gerado a partir da seguinte função:
e ![]()
Segue o comando para gerar o gráfico em questão:
> splot x**2 + y**2, x**2 - y**2 |
Figura 6: Gráfico de malha
O gráfico resultante pode ser visto na figura 5.
Neste caso, será gerado um gráfico de malha com alguns poucos pontos no arquivo de dados, sendo assim:
1 2 4 2 3 3 4 3 3 4 2 4 5 4 1 |
Gráficos em três dimensões são gerados a partir do comando splot, ao invés do plot tradicional. O comando splot significa que o gráfico a ser gerado é em três dimensões, enquanto o comando plot gera em duas dimensões. A maneira mais simples de utilizá-lo é conforme este exemplo:
> splot "tmp3.txt" with lines |
A Figura 7 mostra como ficaria o gráfico gerado.
Figura 7: Gráfico tridimensional a partir de um arquivo externo
Exportando o gráfico
Todos os exemplos acima foram gerados na tela do usuário, isto é, é aberta uma janela extra a cada comando de plot. O gnuplot permite que o gráfico seja exportado para um arquivo, sendo possível importá-lo, posteriormente, em algum outro documento, como por exemplo, no OpenOffice, Microsfot Office, LaTeX, etc.
Para exportar um gráfico para um arquivo, deve ser configurado o tipo de arquivo alvo. Para tanto, deve-se usar o comando set terminal e o formato de arquivo de destino, como por exemplo png, corel, jpeg, postscript, pstex, etc.
Desta forma, caso o arquivo de destino seja um gráfico png, deve ser usado o seguinte comando:
> set terminal png |
Apos a definição do terminal, é necessário que seja definido o nome do arquivo alvo, caso contrário o arquivo será enviado para a saída padrão (stdout). O nome do arquivo é configurado utilizando o comando set output. Segue um exemplo para exportar um gráfico de seno para o arquivo "saida.png".
> set terminal png Terminal type set to 'png' Options are 'nocrop font /usr/share/fonts/dejavu/DejaVuSans.ttf 12 size 640,480 ' > set output "saida.png" > plot sin(x) |
O gnuplot é uma ferramenta complexa e extremamente configurável. A maneira mais fácil de evoluir os conhecimentos é olhando exemplos já prontos. Seguem alguns exemplos e links para os códigos fontes destes exemplos.
Figura 6: Coração gerado pelo gnuplot
O código fonte do exemplo da Figura 6 pode ser obtido no link Heart script. Esse é um gráfico e m três dimensões a partir de uma fórmula matemática com a função em questão.
Um outro exemplo fácil e com menos de dez linhas de código é o gráfico na Figura 7. Ele foi gerado a partir de um script localizado em A Virtual Seashells -- Turritella.
Figura 7: Uma concha gerada pelo gnuplot
Etiquetas
Por fim, para colocar nome no gráfico, nas funções e nos eixos, deve-se utilizar os comandos abaixo:
set xlabel “<nome do eixo x>” : Define a etiqueta no eixo X set ylabel “<nome do eixo y>” : Define a etiqueta no eixo Y set title “<Nome do grafico>” : Define o nome do gráfico |
Além disso, é possível nomear as funções utilizando o parâmetro title "<Nome da função>", para cada função que se deseja imprimir. Por exemplo, o script abaixo gera o gráfico da Figura 8.
> set title "Meu gráfico"
> set xlabel "Eixo X"
> set ylabel "Eixo Y"
> plot -x title "Função 1", 1/x title "Função 2"
|
Figura 8: Nomeando as entidades do gráfico
Após esta pequena introdução, fica fácil notar a utilidade da ferramenta gnuplot. Apesar da interface ser um pouco diferente do que a maioria das pessoas estão acostumadas, o gnuplot tem um poder de manipular gráficos complexos raramente visto nas outras ferramentas, e portanto, vale a pena ser estudada.
Arquivos de demonstração para gnuplot
Utilizando o gnuplot para gerar bons gráficos
gnuplot tips
