Gnuplot: ferramenta para criação de gráficos

Gnuplot: ferramenta para criação de gráficos

2017, Jun 12    

Embora receba em seu nome o termo GNU, essa ferramenta não possui uma licença ligada a GPL e muito menos possui relação com o projeto GNU. O Gnuplot trata-se de uma freeware, ou seja, você não precisa pagar para utilizá-lo mas também não possui permissão para modificar o seu código fonte1.

O gnuplot é uma ferramenta multiplataforma de linha de comando para criação de gráficos. Foi criado para auxiliar estudantes e cientistas a visualizar de forma interativa dados e funções matemáticas. Outras aplicações como o Octave2, por exemplo, utiliza o gnuplot como engine para plotar gráficos.

Ele dá suporte a plotagem de gráficos 2D, 3D e gif, e scripts podem ser utilizados. Scripts? Sim, scripts. O legal de trabalhar com essa ferramenta por linha de comando é a possibilidade de plotar gráficos tanto de forma interativa quanto por meio de scripts. E é isso o que veremos neste post.

Instalação do gnuplot

O download do gnuplot pode ser realizado em seu repositório no sourceforget (repositório gnuplot). Em sistemas Linux é comum que o gnuplot esteja em seus repositórios. Então, para instalá-lo basta seguir um dos seguintes comandos:

Para dpkg (exemplo: Debian):

$ sudo apt-get install gnuplot

Para rpm (exemplo: Fedora):

$ sudo dnf install gnuplot

Executando o gnuplot

Após a instalação, no terminal, podemos executar o gnuplot da seguinte maneira: $ gnuplot. Na forma interativa podemos inserir alguns comandos e o gráfico só será plotado ao inserir o comando plot.

Gnuplot

Uma outra forma de utilizá-lo é através de scripts com extensão .plt e que segue o seguinte formato de execução $ gnuplot arquivo.plt.

Exemplos Práticos

Aqui é apresentado três exemplos de utilização do gnuplot. Não é a intenção decifrar linha por linha dos escripts, mas sim, dar noção de funcionamento da ferramenta e plotagem dos gráficos. O primeiro exemplo irá abordar o uso do gnuplot via linha de comando e os dois últimos via scripts.

Gráfico da função seno

Esse primeiro exemplo é algo bem básico, apenas para familiarização, que podemos trabalhar direto no terminal. Acessando o gnuplot realizamos a plotagem da função seno que abrirá uma janela apresentando o gráfico dessa função. Logo após, temos a inserção de dois comandos responsáveis por setar os intervalos em valores para os eixos x e y. Para que essas alterações possam ser visualizadas faz-se necessário um replot.

$ gnuplot
gnuplot> plot sin(x)
gnuplot> set xrange [0:10]
gnuplot> set yrange [-2:2]
gnuplot> replot

Através da janela do gnuplot existe a possibilidade de salvar o gráfico em formato PDF, SVG e imagem. O resultado:

Gnuplot

Utilizando dados de arquivo

Neste exemplo trabalhamos com dados de um arquivo externo, que foi denominado de dados.txt, e o seu conteúdo é mostrado a seguir:

    10.835    32.394
18.714 31.073
26.593 29.393
34.472 27.467
42.352 25.353
50.231 23.227
58.110 21.067
65.989 19.013
73.868 17.078
81.748 15.070
89.627 13.188
97.506 11.401
105.385 9.723
113.264 8.132
121.144 6.581
129.023 5.268
136.902 3.964
144.781 2.781
152.660 1.627
160.540 0.621
168.419 -0.317
176.298 -1.153
184.177 -1.925
192.056 -2.820
199.936 -3.599
207.815 -4.235
215.694 -4.780
223.573 -5.211
231.452 -5.484
239.332 -5.752
247.211 -6.004
255.090 -6.185
262.969 -6.490
270.848 -6.566
278.728 -6.783
286.607 -6.702
294.486 -6.634
302.365 -6.554
310.244 -6.436
318.124 -6.213
326.003 -6.103
333.882 -5.890
341.761 -5.789
349.640 -5.545
357.520 -5.442
365.399 -5.113

As colunas representam os eixos cartesianos x e y, respectivamente. O script para a construção do gráfico foi denominado de dados.plt, onde a fonte escolhida para o gráfico foi Verdana em negrito de tamanho 9. Diferente do exemplo anterior, este salva o gráfico em imagem com o nome de dados.png e possui um enconding que pode ser necessário para mostrar palavras acentuadas e o “ç”. Nele também foi configurado para que os valores do eixo x sejam mostrados de 100 em 100 e os do eixo y de 10 em 10. Por fim, é inserido o arquivo que possui os dados a serem apresentados graficamente, assim como o nome da linha e a sua cor.

set terminal pngcairo enhanced font 'Verdana-Bold,9'
set output 'dados.png'
set encoding iso_8859_1
set title "Gráfico utilizando dados de arquivo"
set xlabel "Eixo X"
set ylabel "Eixo y"
set xtics 100
set ytics 10
plot "dados.txt" title "Linha verde" lc rgb "green" with lines

O resultado:

Gnuplot

Utilizando dados de mais de um arquivo

Aqui o arquivo dados.txt foi dividido em outros dois, onde um possui somente a primeira coluna e outro somente a segunda coluna. O script anterior também foi alterado setando intervalos para os eixos cartesianos iniciando-os pelo valor zero. E a legenda do gráfico recebeu estilo de box e espaçamento. Observe que os arquivos foram inseridos dentro do mesmo plot.

set terminal pngcairo enhanced font 'Verdana-Bold,9'
set output 'dados2.png'
set encoding iso_8859_1
set title "Gráfico utilizando dados de arquivo"
set xlabel "Eixo X"
set ylabel "Eixo y"
set xrange [0:20]
set yrange [0:50]
set key top font "2" box 3 spacing 3
plot "dados1.txt" title "Linha vermelha" lc rgb "red" with lines,\
"dados2.txt" title "Linha azul" lc rgb "blue" with lines

O resultado:

Gnuplot

Mais informações

Para maiores informações acerca de software é sempre importante verificar a sua man page, no caso: $ man gnuplot

E, logicamente, a documentação (gnuplot.pdf) presente no seu site oficial, onde além da documentação consta alguns exemplos (demo gnuplot) para testes e aprendizagem.

Para quem prefere livros, duas recomendações são feitas pelo site oficial do gnuplot. São eles: Phillips, L. gnuplot Cookbook. Packt Publishing, 2012 Janert, P. K. Gnuplot in Action - Understanding Data with Graphs. Manning Publications, 2ª Ed., 20163.

Finalizando…

Aqui tratamos de forma breve sobre uma ferramenta desenvolvida para o meio acadêmico, mas que sem dúvidas pode ser utilizada em outros contextos. Como apresentado, a sua instalação é simples e a sua aprendizagem pode demadar algum tempo dependendo dos estilos que você deseja aplicar em seus gráficos.

E aí? Você já conhecia o Gnuplot? Já o utilizou? Conhece alguma outra ferramenta alternativa? Pois conte para gente a sua experiência e/ou opinião nos comentários. O seu feedback é sempre bem-vindo.

Referências

1 http://www.gnuplot.info/faq/faq.html#x1-120001.7

2 https://www.gnu.org/software/octave/

3 http://gnuplot.info/books.html