Помогите, пожалуйста.
Я только начала работать с gnuplot. Простые графики осваиваются легко.
Вопрос?
Строю серию графиков в gnuplot из a.dat.
Мне желательно на каждый график выводить поясняющую запись из другого файла name.dat.
Файл name.dat состоит из строчек, количество которых в точности соответствует количеству графиков из файла a.dat.
Максимум чего я добилась, это на каждом графике ставить число-метку, которая соответствует номеру строки из файла name.dat. Этот номер содержится в первой колонке файла name.dat. Хотелось бы на каждый график выводить из этой строки второе и третье числа, которые соответственно находятся во втором и третьем столбцах name.dat.
gnuplot: комментарий-лэйбл на графики
Модератор: Bizdelnick
Re: gnuplot: комментарий-лэйбл на графики
И что конкретно не получается?
Re: gnuplot: комментарий-лэйбл на графики
файл для надписей на графике:
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
вот это у меня не получается
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
вот это у меня не получается
Re: gnuplot: комментарий-лэйбл на графики
Возможно удастся сделать задуманное, использовать скрипт-обёртку на bash, который будет подменять "число-метку, которая соответствует номеру строки из файла name.dat" на данные из этого файла.
Re: gnuplot: комментарий-лэйбл на графики
Например:
Тут в строке title_name=$(grep "^1 " name.dat | awk '{print $2" "$3}') делается следующее:
1. Из файла name.dat грепом выбирается строка, содержащая нужную легенду. В нашем случае это строка начинающаяся на 1 и пробел.
2. Из полученной строки выделяется содержимое второго и третьего столбцов.
3. Полученная легенда заносится в переменную title_name.
Далее данные из переменной title_name подставляются в инструкцию title для гнуплота.
Для нескольких графиков всё это можно поместить в цикл, который будет перебирать нужные строки из файла name.dat.
Код: Выделить всё
#!/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
1. Из файла name.dat грепом выбирается строка, содержащая нужную легенду. В нашем случае это строка начинающаяся на 1 и пробел.
2. Из полученной строки выделяется содержимое второго и третьего столбцов.
3. Полученная легенда заносится в переменную title_name.
Далее данные из переменной title_name подставляются в инструкцию title для гнуплота.
Для нескольких графиков всё это можно поместить в цикл, который будет перебирать нужные строки из файла name.dat.
Re: gnuplot: комментарий-лэйбл на графики
К сожалению не получается.
Вот для примера листинги:
данные для графиков
a.dat
Коментарии к графикам
name.dat
программа построения графиков
a2.plt
при выполнении программы выдается ошибка:
С уважением, 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>
Последний раз редактировалось Bizdelnick 14.08.2018 09:54, всего редактировалось 1 раз.
Причина: теги [code], [sh]
Причина: теги [code], [sh]
Re: gnuplot: комментарий-лэйбл на графики
Для вызова изнутри используй команду system http://www.gnuplot.info/docs_4.2/gnuplo ... 1-34100046