¿Cómo trazar el gráfico de los valores de un archivo de texto usando gnuplot?

10

¿Cómo trazar un gráfico a partir de valores de archivos de texto? El archivo de texto se ve a continuación:

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

Quiero trazar estos valores como un gráfico en el script de shell. En los valores del eje x de la columna de ubicación y los valores del eje y de la columna count1 y count2.

manu
fuente
Lo obvio plot "/tmp/temp.txt"falla con Bad data on line 1 of file /tmp/temp.txt. Creo que es posible que deba crear una versión del archivo con solo números, sin encabezados de fila / columna. Alternativamente, use algo como gnumeric.
barrycarter

Respuestas:

9

Usando el mismo archivo de entrada (ex.tsv), y creando un script gnuplot para controlar mejor los detalles

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

y gnuploting los datos:

gnuplot -p ex.gnu < ex.tsv

vemos el histograma correspondiente.

Para crear un archivo png (para cargar y mostrar en SO) agregue 2 líneas más:

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

ingrese la descripción de la imagen aquí

JJoao
fuente
7

Solución de trabajo para gnuplot v5.0:

Archivo de datos de entrada 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" - título de la trama principal

  • set xlabel "location"- etiqueta de configuración para xeje

  • set ylabel "count"- etiqueta de configuración para yeje

  • set grid - Agregar cuadrícula a la trama

  • (column(0)):2:xtic(1)- rango de columna, (column(0))- como la primera columna en el archivo de entrada tiene valores no numéricos, necesitamos imitar la primera columna numérica ya que gnuplot solo espera valores numéricos en ella

  • w l- significa con líneas , para unir todos los puntos de datos con líneas


Lanzamiento interactivo:

$ gnuplot
gnuplot> load "locations.plt"

Resultado procesado:

ingrese la descripción de la imagen aquí

RomanPerekhrest
fuente
Solo quería mencionar, tenga en cuenta las comillas alrededor de ubicaciones.plt en el comando gnuplot> load "locations.plt", gnuplot lo requiere, load locations.pltno funcionará y obtendrá "error interno: operador STRING aplicado a una variable indefinida o no STRING" si lo olvida.
jrh