Создание файлов gnuplot через скрипт в php - PullRequest
1 голос
/ 01 июля 2011

Я задавал похожий вопрос несколько дней назад, но это немного другой вкус;конечно более конкретный.

У меня есть php-файл, который динамически создает скрипт gnuplot, а затем запускает этот скрипт, используя 4 текстовых файла (по 1 на строку графика), созданных заранее с другим php-файлом.

Проблема в том, что файлы graph.eps генерируются пустыми, и я не могу понять это.У меня такое ощущение, что это как-то связано с каталогом, в котором находятся текстовые файлы.

Это файл, который я генерирую, а затем запускаю.

set terminal postscript enhanced color
set size ratio 0.7058
set output '/srv/../A.2.5.1a.eps'
set grid

set key font "Arial,10"
set key center bot
set key out vertical
set key horizontal center
set key box

set style line 1  linetype 1 linecolor rgb "red"  linewidth 2.000 pointtype 6 pointsize     default
set style line 3  linetype 1 linecolor rgb "#DAA520"  linewidth 2.000 pointtype 6 pointsize default
set style line 4  linetype 1 linecolor rgb "#006400"  linewidth 2.000 pointtype 6 pointsize default
set style line 6  linetype 1 linecolor rgb "blue"  linewidth 2.000 pointtype 6 pointsize default

set multiplot
set palette model RGB functions 0.8+gray/3, 0.8+gray/3, 0.8+gray/3
set pm3d map
set isosample 100,100

unset colorbox
unset border
unset xtics
unset ytics
set nokey
set nolabel
set size 1.025,1.2
set origin -0.021,-0.06

splot y t ' '

set title "SECTION A.2.5.1a TEST RESULTS"
set key box
set key horizontal center bot
set y2tics 0 , 200
set ytics nomirror
set xtics nomirror

set border
set xtics 250
set xtics font "Arial,8"
set ytics 1750
set size 1,1
set xtics out offset -1,-0.5
set xtics rotate by 45

unset origin
unset x2tics

set xlabel "Loop Length, 26AWG(kft)"
set ylabel "Downstream Data Rate (kbps)"
set y2label "Upstream Data Rate (kbps)"
set xrange [ 250 : 5500 ] noreverse nowriteback
set yrange [ 0 : 14000 ] noreverse nowriteback
set y2range[ 0 : 1400 ] noreverse nowriteback
set bmargin  7

plot    "DSE_A.2.5.1a.txt"  ls 4 title 'Expected Downstream Rate' with linespoints,      \
"DS_A.2.5.1a.txt" ls 1 title 'Measured Downstream Rate' with linespoints, \
\
"USE_A.2.5.1a.txt"  axes x1y2 ls 6 title 'Expected Upstream Rate' with linespoints, \
"US_A.2.5.1a.txt"  axes x1y2 ls 3 title 'Measured Upstream Rate' with linespoints

unset multiplot

После создания яиспользуйте:

exec( "{$pathName} gnuplot {$File}");

$ pathName является CWD для файла, а переменная $ File объясняет себя.

Я пробовал использовать plot $ pathname / DS_A.2.5.1a.txtи т.д., но это тоже не работает.

Спасибо за ваше время, и я прошу прощения за длинный пост.Я изменил заданный путь вывода, потому что он был очень длинным и содержал относительно приватную информацию.

Спасибо, и я с нетерпением жду всех ответов!

Редактировать: Я только что прочитал http://linux.byexamples.com/archives/487/plot-your-graphs-with-command-line-gnuplot/ иЯ думаю, что, возможно, не chmod-ing, и что другая команда может быть проблемой, но когда я пытаюсь, это все еще не работает.

Так как это выполняется удаленно на сервере, я не получаю сообщения об ошибкахчто я делаю, когда запускаю gnuplot вручную.

1 Ответ

1 голос
/ 01 июля 2011

Может быть полезно отобразить выполненную команду. Вместо:

exec( "{$pathName} gnuplot {$File}");

попробовать

$command_to_execute = "$pathName gnuplot $File";
echo $command_to_execute . "\n";
exec( $command_to_execute );

Похоже, что ваш путь к gnuplot неверен. Возможно, вам придется удалить пробел, как это:

$command_to_execute = "{$pathName}gnuplot {$File}";

и вам может понадобиться добавить косую черту, например:

$command_to_execute = "{$pathName}/gnuplot {$File}";
...