Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中通过脚本生成gnuplot eps文件_Php_Dynamic_Exec_Gnuplot_Eps - Fatal编程技术网

在php中通过脚本生成gnuplot eps文件

在php中通过脚本生成gnuplot eps文件,php,dynamic,exec,gnuplot,eps,Php,Dynamic,Exec,Gnuplot,Eps,几天前我问了一个类似的问题,但这是一个略有不同的味道;当然更具体 我有一个动态创建gnuplot脚本的php文件,然后使用另外一个php文件预先创建的4个文本文件(每行绘图1个)运行该脚本 问题是graph.eps文件生成为空,我无法理解。我感觉它与文本文件所在的目录有关 这是我生成并运行的文件 set terminal postscript enhanced color set size ratio 0.7058 set output '/srv/../A.2.5.1a.eps' set gr

几天前我问了一个类似的问题,但这是一个略有不同的味道;当然更具体

我有一个动态创建gnuplot脚本的php文件,然后使用另外一个php文件预先创建的4个文本文件(每行绘图1个)运行该脚本

问题是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等,但也不起作用

谢谢你的时间,我为这篇冗长的文章道歉。我更改了设置的输出路径,因为它非常长,并且包含相对私有的信息

谢谢,我期待所有的回复

编辑:我刚刚读过,我认为可能不是chmod-ing,其他命令可能是个问题,但当我尝试时,它仍然不起作用


因为它是在服务器上远程运行的,所以我没有收到手动运行gnuplot时的错误消息。

显示已执行的命令可能会有帮助。而不是:

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

您指向
gnuplot
的路径似乎无效。您可能需要删除空间,如下所示:

$command_to_execute = "{$pathName}gnuplot {$File}";
$command_to_execute = "{$pathName}/gnuplot {$File}";
您可能需要添加一条斜线,如下所示:

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

显示已执行的命令可能有指导意义。而不是:

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

您指向
gnuplot
的路径似乎无效。您可能需要删除空间,如下所示:

$command_to_execute = "{$pathName}gnuplot {$File}";
$command_to_execute = "{$pathName}/gnuplot {$File}";
您可能需要添加一条斜线,如下所示:

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

如果此空白输出仅发生在eps端子上,而不发生在x11或pdfcairo端子上,则您发现了问题。如果不是这样,请尝试调试它,而不是使用数据文件作为绘图的输入,使用诸如x或2*x之类的函数。如果我用伪函数而不是数据文件运行脚本,我不会得到一个空白输出。我可以自己调试这个程序,但我在运行脚本的服务器上没有写权限,因此我无法手动尝试。脚本通过管理员帐户在服务器上运行。如果此空白输出仅在eps终端上发生,而不是在x11或pdfcairo终端上发生,则您发现了问题。如果不是这样,请尝试调试它,而不是使用数据文件作为绘图的输入,使用诸如x或2*x之类的函数。如果我用伪函数而不是数据文件运行脚本,我不会得到一个空白输出。我可以自己调试这个程序,但我在运行脚本的服务器上没有写权限,因此我无法手动尝试。脚本是通过管理员帐户在服务器上运行的,我会尝试,但我已经切换到exec(“gnuplot{$pathName}/{$File}”);这是行不通的,你应该指定gnuplot的完整路径,并确保webserver用户有执行它的权限;但这不起作用,您应该指定gnuplot的完整路径,并确保webserver用户有权执行它。