Obter taxa de 2 arquivos no gnuplot

Eu tenho 2 arquivos dat:

a.dat #Xs 100 25 200 56 300 75 400 67 b.dat #Xs 100 65 200 89 300 102 400 167 

Eu quero desenhar um gráfico no gnuplot onde os valores yy são uma razão entre os valores de a.dat e b.dat respectivamente. por exemplo, 25/65, 56/89, 75/102 e 67/167.

Como eu faço isso? Eu só sei fazer um enredo como este, e não com a relação.

 plot "a.dat" using 1:2 with linespoints notitle "b.dat" using 1:2 with linespoints notitle 

Você não pode combinar os dados de dois arquivos diferentes em uma única instrução de using . Você deve combinar os dois arquivos com uma ferramenta externa.

A maneira mais fácil é usar paste :

 plot '< paste a.dat b.dat' using 1:($2/$4) with linespoints 

Para uma solução independente de plataforma, você poderia usar, por exemplo, o seguinte script python, que neste caso faz o mesmo:

 """paste.py: merge lines of two files.""" import sys if (len(sys.argv) < 3): raise RuntimeError('Need two files') with open(sys.argv[1]) as f1: with open(sys.argv[2]) as f2: for line in zip(f1, f2): print line[0].strip()+' '+line[1], 

E então ligue

 plot '< python paste.py a.dat b.dat' using 1:($2/$4) w lp 

(veja também Gnuplot: plotando o máximo de dois arquivos )

A resposta curta é que … você não pode. O Gnuplot processa um arquivo de cada vez.

A solução é usar uma ferramenta externa, por exemplo, usando o shell se você tiver um unix ou gnuplot.

join file1 file2 > merged_file permitirá que você mescle seus arquivos facilmente se a primeira coluna for idêntica em ambos os arquivos. As opções permitem ingressar em outras colunas e gerenciar dados ausentes em qualquer arquivo.

No caso de não haver coluna comum, mas o número da linha for relevante, o paste funcionará.

Existe um truque se os dois conjuntos de dados não se encheckboxm (amostragem diferente em x), mas você tem um bom modelo matemático para pelo menos um deles:

 fit f2(x) data2 us 1:2 via ... set table $corr plot data1 using 2:(f2($1)) unset table plot $corr using 1:2 

Isto é obviamente absurdo se ambos os conjuntos de dados tiverem o mesmo conjunto de variables ​​independentes, porque você pode simplesmente combiná-los (veja outras respostas).