Come tracciare un grafico dai valori di un file di testo usando gnuplot?


10

Come tracciare un grafico dai valori dei file di testo? Il file di testo è simile al seguente:

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

Voglio tracciare questi valori come un grafico nello script della shell. In valori dell'asse x della colonna della posizione e valori dell'asse y della colonna count1 e count2.


L'ovvio plot "/tmp/temp.txt"fallisce Bad data on line 1 of file /tmp/temp.txt. Penso che potresti dover creare una versione del file con solo numeri, senza intestazioni di riga / colonna. In alternativa, usa qualcosa come gnumeric.
Barrycarter,

Risposte:


9

Utilizzando lo stesso file di input (ex.tsv) e creando uno script gnuplot per controllare meglio i dettagli

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 dei dati:

gnuplot -p ex.gnu < ex.tsv

vediamo l'istogramma corrispondente.

Per creare un file png (per caricare e mostrare in SO) aggiungere altre 2 righe:

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

inserisci qui la descrizione dell'immagine


7

Soluzione funzionante per gnuplot v5.0:

File di dati di input loc.dat:

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

script gnuplotlocations.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" - titolo della trama principale

  • set xlabel "location"- etichetta di impostazione per xasse

  • set ylabel "count"- etichetta di impostazione per yasse

  • set grid - aggiunta di griglia alla trama

  • (column(0)):2:xtic(1)- intervallo di colonne, (column(0))- poiché la 1a colonna nel file di input ha valori non numerici, dobbiamo imitare la 1a colonna numerica poiché gnuplot prevede solo valori numerici in essa

  • w l- significa con linee , per unire tutti i punti dati con linee


Lancio interattivo:

$ gnuplot
gnuplot> load "locations.plt"

Risultato reso:

inserisci qui la descrizione dell'immagine


Volevo solo menzionare, notare le virgolette intorno a locations.plt nel comando gnuplot> load "locations.plt", gnuplot lo richiede, load locations.pltnon funzionerà e otterrai "errore interno: operatore STRING applicato a variabile non definita o non STRING" se lo dimentichi.
jrh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.