Как построить график из значений текстового файла, используя gnuplot?

10

Как построить график из значений текстового файла? Текстовый файл выглядит следующим образом:

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

Я хочу построить эти значения в виде графика в сценарии оболочки. По оси X значения столбца местоположения и по оси Y значения столбцов count1 и count2.

Мана
источник
Очевидное plot "/tmp/temp.txt"терпит неудачу с Bad data on line 1 of file /tmp/temp.txt. Я думаю, что вам, возможно, просто нужно создать версию файла только с числами, без заголовков строк / столбцов. В качестве альтернативы используйте что-то вроде gnumeric.
Баррикартер

Ответы:

9

Использование того же входного файла (ex.tsv) и создание сценария gnuplot для лучшего контроля над деталями

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

и gnuploting данные:

gnuplot -p ex.gnu < ex.tsv

мы видим соответствующую гистограмму.

Чтобы создать файл png (загрузить и показать в SO), добавьте еще 2 строки:

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

введите описание изображения здесь

JJoao
источник
7

Рабочее решение для gnuplot v5.0:

Файл входных данных loc.dat:

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

скрипт 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" - основной сюжет

  • set xlabel "location"- установка метки для xоси

  • set ylabel "count"- установка метки для yоси

  • set grid - добавление сетки к сюжету

  • (column(0)):2:xtic(1)- диапазон столбцов, (column(0))- поскольку 1-й столбец во входном файле имеет нечисловые значения, нам нужно имитировать 1-й числовой столбец, поскольку gnuplot ожидает только числовые значения в нем

  • w l- означает со строками соединить все точки данных со строками


Интерактивный запуск:

$ gnuplot
gnuplot> load "locations.plt"

Предоставленный результат:

введите описание изображения здесь

RomanPerekhrest
источник
Просто хочу упомянуть, обратите внимание на кавычки вокруг location.plt в команде gnuplot> load "locations.plt", gnuplot требует, чтобы load locations.pltэто не сработало, и вы получите «внутреннюю ошибку: оператор STRING применен к неопределенной или не-STRING переменной», если вы ее забудете.
JRH