gnuplot: комментарий-лэйбл на графики

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
gaverg
Сообщения: 3

gnuplot: комментарий-лэйбл на графики

Сообщение gaverg »

Помогите, пожалуйста.
Я только начала работать с gnuplot. Простые графики осваиваются легко.
Вопрос?
Строю серию графиков в gnuplot из a.dat.
Мне желательно на каждый график выводить поясняющую запись из другого файла name.dat.
Файл name.dat состоит из строчек, количество которых в точности соответствует количеству графиков из файла a.dat.
Максимум чего я добилась, это на каждом графике ставить число-метку, которая соответствует номеру строки из файла name.dat. Этот номер содержится в первой колонке файла name.dat. Хотелось бы на каждый график выводить из этой строки второе и третье числа, которые соответственно находятся во втором и третьем столбцах name.dat.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: gnuplot: комментарий-лэйбл на графики

Сообщение Vascom »

И что конкретно не получается?
Спасибо сказали:
gaverg
Сообщения: 3

Re: gnuplot: комментарий-лэйбл на графики

Сообщение gaverg »

файл для надписей на графике:
name.dat
1 0.001 1.e-4
2 0.002 1.e-3
3 0.002 2.e-2
.....

Я строю графики из данных a.dat и хочу, чтобы на 1-ом графике была надпись "0.001 1.e-4" из a.dat, на втором " 0.002 1.e-3" и т.д.

сейчас у меня программа

plot 'a.dat' us 2:3 every :::idx::idx
pause -1
while (idx<30) {
idx = idx + 1;
replot
pause -1}

не могу сделать на графике комментария из name.dat
вот это у меня не получается
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: gnuplot: комментарий-лэйбл на графики

Сообщение Vascom »

Возможно удастся сделать задуманное, использовать скрипт-обёртку на bash, который будет подменять "число-метку, которая соответствует номеру строки из файла name.dat" на данные из этого файла.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: gnuplot: комментарий-лэйбл на графики

Сообщение Vascom »

Например:

Код: Выделить всё

#!/bin/bash

title_name=$(grep "^1 " name.dat | awk '{print $2" "$3}')

echo "set datafile separator ','
plot 's00.csv' using 1:2 with lines title \"$title_name\"" | \
gnuplot --persist
Тут в строке title_name=$(grep "^1 " name.dat | awk '{print $2" "$3}') делается следующее:
1. Из файла name.dat грепом выбирается строка, содержащая нужную легенду. В нашем случае это строка начинающаяся на 1 и пробел.
2. Из полученной строки выделяется содержимое второго и третьего столбцов.
3. Полученная легенда заносится в переменную title_name.
Далее данные из переменной title_name подставляются в инструкцию title для гнуплота.

Для нескольких графиков всё это можно поместить в цикл, который будет перебирать нужные строки из файла name.dat.
Спасибо сказали:
gaverg
Сообщения: 3

Re: gnuplot: комментарий-лэйбл на графики

Сообщение gaverg »

К сожалению не получается.

Вот для примера листинги:
данные для графиков
a.dat

Код: Выделить всё

#N  x     y
 1  1    15
 2 3    5
 3 6    1
 4 9   4
 5 11   8
 6 12   15

 1  1    150
 2 3    50
 3 6    10
 4 9   40
 5 11   80
 6 12   150
Коментарии к графикам
name.dat

Код: Выделить всё

1 0.001 1.e-4
2 0.002 1.e-3
3 0.002 2.e-2
программа построения графиков
a2.plt

Код: Выделить всё

#a2.plt
set term win enhanced
set style data lines
set grid
set xrange [0.9:12.2]
set logscale y
idx = 0;
set xlabel 'Photon energy, keV'
set ylabel 'kP, cm^{2}/g'
plot 'a.dat' us 2:3 every :::idx::idx
#plot 'a.dat' us 2:3 
#!/bin/bash
title_name=$(grep "^1 " name.dat | awk '{print $2" "$3}')
echo "set datafile separator ','
plot 's00.csv' using 1:2 with lines title \"$title_name\"" | \
gnuplot --persist
pause -1
#while (idx<30) {
#idx = idx + 1;
#replot
#pause -1}
при выполнении программы выдается ошибка:

Shell

gnuplot> load 'a2.plt'

gnuplot> title_name=$(grep "^1 " name.dat | awk '{print $2" "$3}')
^
"a2.plt", line 13: Column number or datablock line expected

gnuplot>
С уважением, gaverg
Последний раз редактировалось Bizdelnick 14.08.2018 09:54, всего редактировалось 1 раз.
Причина: теги [code], [sh]
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: gnuplot: комментарий-лэйбл на графики

Сообщение Vascom »

Для вызова изнутри используй команду system http://www.gnuplot.info/docs_4.2/gnuplo ... 1-34100046
Спасибо сказали:
Ответить