Como plotar um gráfico a partir de valores de um arquivo de texto usando o gnuplot?

5

Como plotar um gráfico a partir de valores de arquivos de texto? O arquivo de texto se parece com abaixo:

location  count1    count2
HZ        100        193
ES        514        289
FP        70         137
BH        31         187

Eu quero plotar esses valores como um gráfico no script de shell. Nos valores do eixo x da coluna de localização e dos valores do eixo y da coluna count1 e count2.

    
por manu 14.09.2017 / 15:38

2 respostas

6

Solução de trabalho para o gnuplot v5.0:

Arquivo de dados de entrada loc.dat :

location  count1    count2
HZ        100        193
ES        514        289
FP        70         137
BH        31         187

gnuplot script locations.plt :

#!/usr/bin/gnuplot -persist

set title "Location data"
set xlabel "location"
set ylabel "count"
set grid
plot "loc.dat" u (column(0)):2:xtic(1) w l title "","loc.dat" u (column(0)):3:xtic(1) w l title ""
  • set title "Location data" - título principal do enredo

  • set xlabel "location" - rótulo de configuração para o eixo x

  • set ylabel "count" - rótulo de configuração para o eixo y

  • set grid - adicionando grade ao gráfico

  • (column(0)):2:xtic(1) - intervalo da coluna, (column(0)) - como a primeira coluna no arquivo de entrada tem valores não numéricos, precisamos imitar a primeira coluna numérica, pois o gnuplot espera apenas valores numéricos nela

  • w l - significa com linhas , para unir todos os pontos de dados com linhas

Lançamento interativo:

$ gnuplot
gnuplot> load "locations.plt"

Resultado processado:

    
por 14.09.2017 / 18:09
6

Usando o mesmo arquivo de entrada (ex.tsv) e criando um script do gnuplot para controlar melhor os detalhes

set style data histogram 
set style fill solid border -1
plot for [i=2:3] '/dev/stdin' using i:xtic(1) title col 

e gnuploting os dados:

gnuplot -p ex.gnu < ex.tsv

vemos o histograma correspondente.

Para criar um arquivo png (para enviar e mostrar no SO), adicione mais 2 linhas:

set terminal pngcairo enhanced font "arial,10" fontscale 1.0 size 600, 400 
set output 'out.png'
set style data histogram 
set style fill solid border -1
plot for [i=2:3] '/dev/stdin' using i:xtic(1) title col

    
por 14.09.2017 / 18:40

Tags