Como eu divido dois conjuntos de dados no gnuplot?


0

Estou usando o gnuplot e tenho dois arquivos de dados separados e gostaria de dividir todos os valores do eixo x do conjunto de dados 1 com cada valor do eixo x com o conjunto de dados 2. O mesmo com o eixo y..Como posso fazer esta??

Posso fazer isso dentro do gnuplot?

Respostas:


0

Você pode fazer isso a partir do gnuplot, embora seja mais fácil pré-projetar seus dados externamente.

Na verdade, isso é bastante semelhante ao pré-processamento de seus dados externamente com algum script que pega seus dados e grava os dados combinados na saída padrão. A sintaxe para usar um pipe no gnuplot é

plot " < program arguments"

Eu costumo usar o AWK para tais fins. Para resolver seu problema, o script de pré-processamento tem que internamente juntar os dois conjuntos de dados de alguma forma e, em seguida, calcular os valores desejados. No AWK, eu faria algo assim:

{
 if(secondfile)
   print $1, $2, values[$1,$2]/$3 
 else
   values[$1,$2]=$3
}
ENDFILE{secondfile=true}

Os valores do primeiro arquivo são armazenados na matriz de valores (o segundo arquivo é falso). O padrão ENDFILE é executado no final de qualquer arquivo (aqui: primeiro) e alterna o comportamento da regra principal para imprimir as coordenadas x e y e os valores divididos (supondo que você tenha o formato de dados de colunas "xy value"). O gancho ENDFILE é suportado no atual GAWK 4.0.

O comando final da trama poderia então parecer

plot "< awk '{if(secondfile) print $1, $2, values[$1,$2]/$3 ; else values[$1,$2]=$3} ENDFILE{secondfile=true}' file1 file2" using 1:2:3

(Eu não entendi completamente como você quer que as quantidades sejam computadas, mas você pode fazer isso de uma maneira similar)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.