Vamos limpar seus dados antecipadamente de (
e )
. O comando do linux sed
é uma boa opção ( column -t
dará um bom formato)
sed 's/[(,)]/\t/g' data.dat | column -t > data02.dat
em que supomos que seu arquivo original tenha o nome data.dat
e que criemos um novo arquivo chamado data02.dat
. O novo arquivo terá 8 colunas. Em gnuplot você pode acessar uma única coluna com a opção using ($1):($8)
para usar dados da primeira coluna como x e dados da oitava coluna para o y .
Agora o truque : define uma função que responderá com y se estiver satisfeito com uma condição, e com mais infinito se for não. Isso porque o gnuplot pula o y com valores infinitos. Então, em gnuplot você pode escrever
myf(y,t)= t == 0 ? y : 1.0/0.
plot 'data2.dat' us ($1):(myf($2,$8))
Claro que você pode fazer isso de uma forma mais compacta, mas para escrever isso, é mais compreensível.
Para a segunda questão, é possível definir uma condição diferente na função
myf2(x,y)= ( 0.001 > abs(x) ) && ( 0.001 > abs(y) ) ? y : 1.0/0
plot 'data2.dat' us ($1):(myf2($1,$2))
em que abs(x)
retorna o valor absoluto de um número (o número sem um sinal).
Nota: ok eu estava com preguiça em vez de using
escrevo apenas us
. Gnuplot entende isso.