March 22, 2010

Gnuplot: Tipos de pontos e linhas

Agora que já aprendemos o básico sobre o gnuplot, eu posso começar a passar dicas mais simples e específicas sobre o uso do programa, voltando-o para aplicações científicas.

Uma pergunta que eu sempre me faço ao fazer um gráfico é qual o tipo de ponto/linha que eu devo utilizar. Em um programa gráfico, normalmente você percorre uma lista até conseguir achar aquela especificação que mais te satisfaz.

No gnuplot o tipo de ponto é especificado com a opção 'pt N' e o tipo de linha é especificado com a opção 'lt N', onde N é um número inteiro que representa o código da linha. O grande "problema" é que o número não diz nada sobre o tipo de linha. Dessa forma seria gasto tempo desnecessário consultando um manual para saber qual é o tipo que quer usar.

O que eu faço é usar o gnuplot para gerar gráficos que me dizem quais são os códigos dos tipos de linhas e pontos disponíveis.
A figura abaixo (clique nela para ampliar) apresenta 39 tipos de pontos. Existem formatos adicionais de pontos, mas sou da opinião que se não conseguir resolver o seu problema com os 15 primeiros formatos deve reconsiderar o gráfico, embora essa seja uma opinião bem pessoal sobre o problema.


Os pontos nessa figura possuem o tamanho 3. O tipo de coisa que pode ficar bem ruim em um gráfico final, mas é excelente para ver bem o ponto.

Um exemplo de comando plot está abaixo.
plot "dados.dat" using ($1):($2) title "Ponto Tipo 10" with points pt 10
Esse comando cria um gráfico de pontos a partir do arquivo dados.dat usando a coluna 1 para o eixo X e a coluna 2 para o eixo Y e com o estilo de ponto tipo 10, ou seja, o triângulo vazado de cabeça para baixo.

Quanto aos tipos de linhas, a figura a seguir (clique nela para ampliar) apresenta todos os 9 tipos de linhas disponíveis atualmente. De fato, eu escrevi no código até o tipo 11, mas isso tem dois objetivos, o primeiro identificar quando surgir um novo tipo de linha e o segundo provar que quando acaba a lista de estilos, o ciclo se repete, ou seja, o tipo 10 é o tipo 1 e tipo 11 o tipo 2, etc. Isso também acontece com os pontos, mas eu não faço idéia de quando a lista de pontos termina.


Acredito que todos concordem que os tipos de linha estão bem nítidos nesse figura. Estou usando espessura de linha tamanho 4 (lw 4). Na espessura padrão (lw 1) as diferenças entre os tipos de linhas podem não ficar tão fáceis de serem percebidas.

Um exemplo de comando plot está abaixo.
plot "dados.dat" using ($1):($2) title "Linha Tipo 5" with lines lt 5
Esse comando cria um gráfico de linhas a partir do arquivo dados.dat usando a coluna 1 para o eixo X e a coluna 2 para o eixo Y e com o estilo de linha tipo 5, ou seja, alternando traço longo e um ponto.

Disponibilizo para os interessados o arquivo do gnuplot, plt, que gera as figuras acima. O que me faz lembrar que eu não havia dito no tópico anterior que um mesmo arquivo .plt pode gerar tantos gráficos quanto forem desejados. E, por favor, não espere muitos comentários escrito dentro do arquivo, do meu ponto de vista, esse plt é importante pelo resultado não por ele mesmo.

E as cores ? Bem, sabe tudo que você leu acima ? Continua válido. Agora você terá de adicionar uma opção a mais que é a 'lc'. As cores padrões disponíveis podem ser vistas na figura abaixo (clique nela para ampliar). De forma similar aos tipos de linhas, existem 9 cores básicas e depois começamos a repetir as cores. Repare que a figura representa o tipo 1 e 2 de linhas com todas as cores básicas disponíveis.
De forma que
plot "dados.dat" using ($1):($2) title "Tipo 5 Cor 2" with lines lt 5 lc 2
cria um gráfico de linhas a partir do arquivo dados.dat usando a coluna 1 para o eixo X e a coluna 2 para o eixo Y e com o estilo de linha tipo 5, ou seja, alternando traço longo e um ponto e a cor 2, ou seja, verde.

Quando eu digo cores básicas, eu quero dizer, que o gnuplot aceita qualquer cor que possa ser representada pelo código RGB, eu, francamente, acho isso inapropriado em gráfico científico.

Eu não acho que faça algum sentido colocar a figura para os tipos de pontos, mas o arquivo plt que gera a figura anterior (que é diferente do primeiro) gera também um pequeno exemplo de configuração das cores em pontos, embora adicionar 'lc N' onde N é o número da cor na linha de plot do gráfico não me parece algo tão misterioso assim...

Ah ! Ainda não descobri se a abordagem dessa ferramenta agrada a uma audiência que espera notas sobre CFD. A verdade é que fazer gráficos é uma das tarefas de qualquer pesquisador e muitos dos leitores desse blog usam o GNU/Linux, LaTeX e OpenFOAM e portanto são candidatos perfeitos ao uso do Gnuplot. Me deixem saber se esse tipo de assunto agrada, ajuda ou não.

Um coisa que eu, infelizmente, percebo é que muitos alunos pensam que porque utilizam uma ferramenta que permite "visualizações fantásticas e complexas", os velhos gráficos bidimensionais de linhas e pontos devam ser descartados. Isso definitivamente não é verdade. Na maior parte das vezes, são os "simples" gráficos 2-D que trazem a maior parte das informações relevantes, bem como são o formato básico de comparação de resultados experimentais com o obtido por CFD. Ainda que a ferramenta não agrade, a importância desses gráficos não deve ser menosprezada.

2 comments:

  1. Ola,

    Eu não tenho qualquer relação com CFD, porém a geração de gráficos baseado no GNUPlot pode ajudar bastante. Seria interessante se voce pudesse colocar alguns exemplos onde os dados utilizados para a geração dos gráficos estivessem contidos em arquivos texto também.

    ReplyDelete
  2. Gustavo,
    seja bem vindo.

    Sua sugestão é pertinente e eu vou ver o que poderei fazer no futuro, porém, no presente, já existe alguma coisa.

    veja em
    http://notasemcfd.blogspot.com/2010/03/gnuplot-tipos-de-pontos-e-linhas.html

    Um abraço

    ReplyDelete