Fazendo histograma 1D a partir de dados 2D usando o gnuplot?

0

Eu tenho dados do formulário:

x1 y1
x2 y2
...

onde cada cuople x, y representa um ponto no plano 2D.

Eu preciso de um histograma do ponto de propagação na direção y (por exemplo, bin todos os pontos com valor y semelhante). Isso seria uma projeção no eixo y, que é então transformada em histograma.

Como eu faria isso usando o gnuplot?

    
por romeovs 24.03.2012 / 15:12

1 resposta

2

Não existe uma maneira simples de fazer um histograma real, já que isso não é simplesmente uma tarefa de plotagem, mas requer que os dados sejam primeiro classificados e armazenados em binários. Você pode fazer isso fora do gnuplot e plotar o resultado do gnuplot simplesmente com plot 'file' with histo .

No entanto, existem duas maneiras principais de fazer o que você deseja dentro do gnuplot.

Este primeiro é um truque antigo que força o gnuplot para o bin e classifica os dados para você usando um pouco de matemática e o estilo smooth freq . Se o seu arquivo de dados é chamado de "dados" você pode fazer:

w = 5
bin(x,wth) = width*floor(x/wth)
plot 'data' using (bin($2,bw)):(1.0) smooth freq with boxes

Isso funciona, mas tem todas as desvantagens dos histogramas, principalmente que a aparência da sua distribuição dependerá da largura da sua bandeja escolhida, que você pode atribuir a "w" na primeira linha.

Lançamentos recentes (> = 4.4) do gnuplot podem calcular uma estimativa de densidade do kernel , que é como um histograma independente de bin: ele fornece uma distribuição contínua. Além disso, faz o binning e classificação para você! Você só precisa dizer

plot 'data' using 2:(.001) smooth kden

O .001 acima fornecerá uma distribuição normalizada se você tiver 1000 pontos de dados. Você vai querer substituir o recíproco do número de pontos de dados que você tem (ou não se incomode se você não se importa se seu resultado é normalizado).

Eu recomendo o último método se você tiver uma versão recente do gnuplot instalada. Há um pouco mais sobre isso no meu livro sobre o gnuplot , que acabou de sair.

    
por 28.03.2012 / 18:45

Tags