• ベストアンサー

gnuplotの実行

PHP4でGNUPLOTを起動して 実行させたいんですが、うまくできません。 今、 system("/usr/local/bin/gnuplot"); system("set term gif"); system("set output 'test.gif'"); system("plot x"); という簡単なプログラムでテストしてみたのですが 反応なしで困っています...。 そもそもこの記述がおかしいのでしょうか? それとも他に関数や方法があるのでしょうか? 因みにpassthruやexec関数などでも試してみましたが やはりダメでした。 ご存知の方、知恵を下さい。 お願いします。

  • PHP
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

> popenはどのように使えばいいのですか? > $fp = popen(/usr/local/bin/gnuplot, "r");←? 今回はGNUPLOTへパラメータを渡してあげるので、 $fp = popen(/usr/local/bin/gnuplot, "w"); と書きます。 んで、$fpをオープンした後、 fwrite($fp,"GNUPLOTのコマンド\n"); fwrite($fp,"GNUPLOTのコマンド\n"); fwrite($fp,"GNUPLOTのコマンド\n"); の様に、コマンドを実行してゆきます。 コマンド実行後は、 pclose($fp); で閉じて完了です。 PLOT描画にある程度時間がかかるのであれば、 fwrite()とfwrite()の間にsleep()を入れてあげましょう。

bridge
質問者

お礼

度々ありがとうございました。 おかげさまでできましたよ!! tomomo0325さんの方法でもできたんですがselenityさんの方が直接コマンドを叩く?感じのロジックでわかりやすいのでこちらを使わせていただきます。 tomomo0325さんごめんなさい。でもありがとうございました。 お二方、とても参考になりました。 ご協力ありがとうございました。

その他の回答 (2)

回答No.2

PHP4.0.6で動作確認しました。 PHP3でも動作すると思います。 gnuplotは良く知らないのですが、 「set term gif」が使えなかったので 「set terminal png」を使用しました。 selenityさんが言われるように、 popen()のほうがスマートかもしれませんが、 デバッグのことを考えてファイルに書き込んで パイプしてみました。 <HTML lang="ja"><HEAD> <META http-equiv="content-type" content="text/html; charset=euc-jp"> </HEAD><BODY> <?php $cmdfile = "/tmp/gnuplot.txt"; $outfile = "/tmp/test.png"; $fp = fopen($cmdfile, "w"); fwrite($fp, "set terminal png\n"); fwrite($fp, "set output \"$outfile\"\n"); fwrite($fp, "plot cos(x)\n"); fclose($fp); $syscmd ="/bin/cat ".$cmdfile." | /usr/bin/gnuplot"; system($syscmd, &$rtn); if ($rtn == 0){ echo "Output success:".$outfile."\n"; } else { echo "NG\n"; } ?> </BODY></HTML>

bridge
質問者

お礼

できました!ありがとうございましたm(_ _)m

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

・set term gif ・set output 'test.gif' ・plot x はGNUPLOTへの命令なので、system()では無理だと思いますよ。 popen()を使えば出来ませんか?

bridge
質問者

補足

ご回答ありがとうございます。 試してみましたが popenはどのように使えばいいのですか? $fp = popen(/usr/local/bin/gnuplot, "r");←? でGNUPLOTをオープンしたら、そのあと GNUPLOTへのコマンドはどのように発行すればいいのでしょう? いろいろ試してみてたいので自信なくても結構です。 これがきっかけになればいいのですから...。 例えば「こういう風にプログラムしてみては?」みたいな 詳細なアドバイスがあると非常に助かります。 大変恐縮ではありますがもう一声下さい。 お願いします。

関連するQ&A

  • gnuplotデータを編集してプロット

    gnuplotでデータを編集してプロットしようと思い、 set datafile separator "," plot 'test.csv' using 1:($4*2) with lines と打ちました。 これを、gnuplotに直接打つとうまくいくのですが、これをtest.pltというファイルに保存して、 call 'test.plt' と、実行すると、 gnuplot> call 'test.plt' gnuplot> plot 'PIDtorque.csv' using 1:(*2) with lines                     ^ "test.plt", line 2: invalid expression と、表示されます。 これは何故なのでしょうか? 宜しくお願いします。

  • gnuplotについて

    以前、こちらでgnuplotのデータをファイルに出力する方法を教えていただいたものです。 以下のようにやってみたのですが、 gnuplot> set yrange [0:5] gnuplot> plot "h1.txt","h4.txt" gnuplot> set terminal postscript eps Terminal type set to 'postscript' Options are 'eps noenhanced monochrome blacktext \ dashed dashlength 1.0 linewidth 1.0 defaultplex \ palfuncparam 2000,0.003 \ butt "Helvetica" 14' gnuplot> set output 'h20.eps' gnuplot> replot epsファイルが出来ただけで、開くことが出来ません。 開こうとすると『作成元のプログラム名が必要です。インターネットで自動的にプログラムを検索するか、またコンピューターにあるプログラム一覧から手動で選択してください。』と出ます。 どうすれば、開くことが出来るのでしょうか? 印刷のためのファイルなので、開くことは出来ないのでしょうか?

  • MacのMaximaで、GNUPlotが起動しない

    Mac版Maximaに詳しい方、知恵を貸していただけないでしょうか。 現在の症状: Maxima本体やGNUPlotのインストールは出来ているらしいが、グラフの表示ができない。おそらくmaxima-init.macの設定に問題がある。 1.GNUPlot:アプリケーションフォルダのGNUPlotをクリックするとコンソールでGNUPlotが起動し、 G N U P L O T version 4.2 pachilevel 6 -------- ------ Terminal type set to 'aqua' gnuplot> と表示されるので、GNUPlotは正常にインストールされているらしい。 2.wx Maxima:アプリケーションフォルダから起動し、簡単な計算、例えば1+1はできるので、Maximaも正常にインストールされているらしい。 3.しかし簡単なグラフを書かせようとしても、何の反応も無い。例えば plot2d( sin(x), [x, -2*%pi, 2*%pi] ); 4.maxima-init.macの設定というのがよく分からず、以下のページの通りにやってみてもできませんでした。 http://d.hatena.ne.jp/lalablog+solr/20120214/1329222225 5.そこで、自分でアプリケーションフォルダにmaxima-init.macをテキストエディタで作り、以下の内容を記述しましたが、やはりだめでした。 gnuplot_command:"/Applications/Gnuplot.app/Contents/Resources/bin/gnuplot"$ set_plot_option([gnuplot_term, aqua])$ 6.OSはMac OS Lion Mountainです。 どうすればいいのでしょうか?

  • phpからImageMagickの使い方

    phpからexecでImageMagickを使いたいと思っています。ためしにjpgからgifに変換できればと思っています。 exec("/usr/bin/convert IMG_0.jpg a.gif",$output); var_dump($output); という感じでテストしています。 ファイルのパスが間違ってるのかとも思うんですが、うまくいきません。 画像ファイルのパスはexecを実行するphpファイルからの相対パスでよいのでしょうか? -versionは成功しているようです。 exec("/usr/bin/convert -version",$output); array(3) { [0]=> string(68) "Version: ImageMagick 6.4.3 2009-04-10 Q16 http://www.imagemagick.org" [1]=> string(57) "Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC" [2]=> string(0) "" }

    • ベストアンサー
    • PHP
  • gnuplotで日本語を含むepsファイル出力

    gnuplot4.2でx軸のラベルを日本語でepsファイル出力をしようと set terminal postscript eps enhanced "GothicBBB-Medium-EUC-H" 20 set output 'graph.eps' set xlabel "日本語" plot x set output set terminal windows としても文字化けしてしまいます。他にも, set term postscript "GothicBBB-Medium-UniJIS-UTF8-H" set term postscript "GothicBBB-Medium-RKSJ-H" とUTF8、EUC-JP、Shift-JISで試してもダメでした。 日本語を表示させてeps出力の仕方を教えてください。

  • PHP+ImageMagick

    exec("/usr/bin/convert -geometry 30x30 /usr/local/apache/htdocs/a/img/test.gif /usr/local/apache/htdocs/a/img/test2.jpg"); 上記プログラムをphp内に書く事によりimgフォルダ内にtest2.jpgが生成されるという認識は間違いでしょうか?エラーも出ませんが、新規画像も作成されません。

    • ベストアンサー
    • PHP
  • PHPからexecを使ってGnuPGを実行できない

    GnuPGをPHPからexec関数を使って実行しようとしていますが、exec関数がエラーになって GnuPGが実行されません。 ただしexec関数に渡すコマンドをコマンドラインから直接打ち込むと正常に実行されます。 具体的には $cmd = "/usr/local/bin/gpg --always-trust --batch --no-secmem-warning -e -a -r ユーザー名 ファイル名のフルパス"; $ret = exec( $cmd, $output, $ret_val ); ここで$retにFALSEが、$ret_valには2が返ってきます。 $cmdのコマンドをコマンドラインから実行すると正常に実行されます。 環境 Apache/1.3.27 (Unix) (Red-Hat/Linux) GnuGP 1.4.6 PHP Version 4.3.11(セーフモードはOff) 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php exec関数

    exec関数を使いたいのですが 調べたら例が出てきたのですが $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); exec()の中をどう修正していいかわかりません usrtとかユーザ名ですか? localとはlocalhostとかでいいですか? bin/phpってなんですか ぜんぜんわかりません すいません

    • 締切済み
    • PHP
  • CGI Chart::Gnuplotの使用法

    コマンドラインからだと作成されるpngファイルがブラウザからだと作成されません。 ブラウザにデバッグ用のprint文は、表示されます。 http://localhost/~.../sample.pl を実行しても、 ブラウザに hello-helloが表示されるだけで、 file.pngが作成されません。 file.pngをブラウザから作成するには、どうしたら良いのでしょうか? よろしくお願いいたします。 コマンドラインからだと、gnuplotで作成されたfile.pngが作成されます。 bash-3.2$ perl sample.pl Content-type:text/html hello-hello 使用したプログラムは、以下のとおりです。 < sample.pl > #! /usr/bin/perl print "Content-type:text/html\n\n"; #use strict; #use warnings; use CGI; use Chart::Gnuplot; my $chart = Chart::Gnuplot->new( output => "file.png" ); my $dataSet = Chart::Gnuplot::DataSet->new( datafile => "test.data" ); print "hello-hello\n"; $chart->plot2d($dataSet);

    • ベストアンサー
    • Perl
  • imagemagickのサイズ指定について

    アップした画像を小さくして保存するようにしたいのですが、 system("/usr/bin/convert -size 50x50 'test.gif' 'test_s.gif'") system("/usr/bin/convert -size 50% 'test.gif' 'test_s.gif'") 上記は同じ意味になるのでしょうか? また、小さくする際にこちらの指定のサイズ(高さ:30幅:30)にして、保存する場合はどのようにすればよろしいですか? よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう