OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

gnuplotの実行

  • 困ってます
  • 質問No.172601
  • 閲覧数382
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 62% (5/8)

PHP4でGNUPLOTを起動して
実行させたいんですが、うまくできません。
今、
system("/usr/local/bin/gnuplot");
system("set term gif");
system("set output 'test.gif'");
system("plot x");
という簡単なプログラムでテストしてみたのですが
反応なしで困っています...。

そもそもこの記述がおかしいのでしょうか?
それとも他に関数や方法があるのでしょうか?
因みにpassthruやexec関数などでも試してみましたが
やはりダメでした。
ご存知の方、知恵を下さい。
お願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル12

ベストアンサー率 41% (324/772)

> 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

お礼率 62% (5/8)

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

その他の回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 41% (324/772)

・set term gif ・set output 'test.gif' ・plot x はGNUPLOTへの命令なので、system()では無理だと思いますよ。 popen()を使えば出来ませんか? ...続きを読む
・set term gif
・set output 'test.gif'
・plot x
はGNUPLOTへの命令なので、system()では無理だと思いますよ。
popen()を使えば出来ませんか?
補足コメント
bridge

お礼率 62% (5/8)

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


  • 回答No.2
レベル6

ベストアンサー率 83% (5/6)

PHP4.0.6で動作確認しました。 PHP3でも動作すると思います。 gnuplotは良く知らないのですが、 「set term gif」が使えなかったので 「set terminal png」を使用しました。 selenityさんが言われるように、 popen()のほうがスマートかもしれませんが、 デバッグのことを考えてファイルに書き込んで パイプしてみました。 < ...続きを読む
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

お礼率 62% (5/8)

できました!ありがとうございましたm(_ _)m
投稿日時 - 2001-11-22 15:53:59
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ