• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GNUPLOTでのGIFグラフ出力)

GNUPLOTでのGIFグラフ出力

このQ&Aのポイント
  • GNUPLOTを使ってテキストファイルからデータを読み込み、折れ線グラフのGIF画像を出力する方法について教えてください。
  • GNUPLOTを使用してテキストファイルから来場者数のデータを読み込み、年月をx軸、人数をy軸とした折れ線グラフのGIF画像を生成する方法についてご教示ください。
  • GNUPLOTを利用して、テキストファイルに保存されているデータを読み込み、年月をx軸に、来場者数をy軸にした折れ線グラフのGIF画像を作成する方法について教えてください。

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

  • ベストアンサー
  • oodaiko
  • ベストアンサー率67% (126/186)
回答No.1

bridgeさんがお使いのOSはWindowsですか? 私はLinux使いですが、コマンドラインから実行するのなら 同じだと思いますので一応Linuxでのやり方を書いておきます。 ******************************************************* 読み込むデータファイルの名前をData.txtとしておきます。 読み込むデータファイルを置いてあるディレクトリでgnuplotを起動します。 コマンドラインで gnuplot とタイプすると gnuplot> というプロンプトが現れます。ここにコマンドを入れていきます。 (1)入力形式の指定 各座標データが単なる数字でかかれているデータなら gnuplot> plot 'Data.txt' with lines と入れてやればすぐディスプレイに表示されるのですが 入力ファイルの第一座標が日時形式になっているので まず入力形式を指定してやる必要があります gnuplot> set xdata time これはx軸の入力データを時間として設定しています。 gnuplot> set timefmt "%Y/%m" 時間としての入力データの形式を指定しています。%Y/%mというのは 年/月 という形のデータであることを指定しています。年は西暦4桁です。 (2)グラフ描画 次にデータを読み込んでグラフ表示をさせます。 gnuplot> set xrange ["2000/09":"2001/08"] gnuplot> set format x "%Y/%m" gnuplot> plot 'Data.txt' using 1:2 with lines 最初のコマンドはx軸の範囲を指定しています。 2つめはx軸の数値の書き方を指定しています。この場合は入力と 同様に 年/月の形で表示します。 最後にデータをプロットして直線でつないだ折れ線グラフを描きます。 plot 'Data.txt' はData.txtを読み込んでグラフを書くことを 指定しています。その次の using 1:2 はデータの1列めと2列めを それぞれxとyの入力とするという指定です。最後の with lines はデータ 同士を直線でつなぐ指定です。 このようにして描いたグラフのy軸の最小値は、デフォルトでは0でなく データの最小値になります。 y軸の最小値を0にしたいのならplotの前に gnuplot> set yrange [0:] を付け加えます さらに折れ線グラフではなく棒グラフにしたいのなら、最後のplot の代わりに gnuplot> set boxwidth -2.0 gnuplot> plot 'Data.txt' using 1:2 with boxes として下さい。最初のコマンドは棒の幅を指定しています。 ここに-2.0を指定するとちょうど隣同士の棒がくっつき合うように 幅が自動調節されます。 棒の間隔を空けたければここに適当な値を指定します。 ただしここでは入力を時間単位にしたので数値は秒単位になります 従ってこののデータの場合、隣同士がくっつき合う時の幅は 3600×24×30=2592000 となります。(実際は2月と3月がわずかに重なるのがわかります) (3)出力 デフォルトではグラフはディスプレイに表示されます。 最初はディスプレイに表示させて様子を見た方が良いでしょう。 最後にGIFファイルに出力します。ここでは出力するファイルの名前を Data.gifとします gnuplot> set terminal gif gnuplot> set output 'Data.gif' gnuplot> replot 最初のコマンドは出力形式をGIFに設定しています。 文字のフォントサイズや画像全体の大きさもオプションで指定出来ます。 help gif と打てば詳しい説明が見られます。デフォルトではフォントは small(6x12 ピクセル)、画像サイズは 640x480ピクセルです。 gifの他に postscriptやpngなど多くの画像形式で出力できます。 set terminal と打てば出力できる形式の一覧が出てきます。 2つめのコマンドは出力ファイルの名前を指定します。 最後にデータを読み込んで描画します。 replot はこのコマンドが読み込まれる前に実行された 最後のplotを実行します。そこで新しくplotしない限り 何回replotしてもreplotの直前の条件でplotされます ------------------------------------------------ 何回も同じことをやるのならコマンドラインからいちいちコマンドを打つのも 面倒ですからコマンドをまとめたバッチファイルを作ってしまいましょう。 上に解説したコマンドをまとめて以下のようなテキストファイルを作り DataPlot.plt という名前で保存します(ファイル名は適当に付けて下さい) そしてコマンドラインで gnuplot DataPlot.plt とすると自動的にバッチファイルを読み込んで実行します。 # DataPlot.plt set xdata time set timefmt "%Y/%m" set xrange ["2000/09":"2001/08"] set format x "%Y/%m" #set yrange [0:] plot 'Data.txt' using 1:2 with lines pause -1 set terminal gif set output 'Data.gif' replot pause -1 途中にある pause -1 というコマンドはディスプレイにグラフを表示した後 GNUPLOTを一時停止させるためのものです。 適当なキーを押すと続きを実行します。 またGNUPLOTは#で始まる行を無視するので、コメントを入れたい時は #で始まる行に書いておきます。 -------------------------------------------- 他にもグラフの色を指定したり凡例やタイトルを指定したり x軸やy軸のスケールや単位を指定したりとさまざまな設定が 出来ますので下のサイトを参考にしていろいろ試してみて下さい。 ******************************************** GNUPLOTの役に立つ情報サイト gnuplotの使い方については1つ目のURLが詳しいです。いろいろなテクニックが 解説してあり参考になります。 2つめは公式マニュアルの日本語化。 3つめはGNUPLOT情報サイト。リンクなどが充実しています。 4つめもリンク集です。 5つめのサイトも役に立つTipsがたくさんあります。 http://art.aees.kyushu-u.ac.jp/members/kawano/gnuplot/ http://www.linux.or.jp/JF/JFdocs/gnuplot.html http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html http://infofarm.affrc.go.jp/~kadosawa/gnuplot.htm http://www.nucl.phys.tohoku.ac.jp/~m_isihar/text/gnuplot.howto.html

参考URL:
http://art.aees.kyushu-u.ac.jp/members/kawano/gnuplot/,http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html
bridge
質問者

お礼

ご丁寧な回答ありがとうございました。 感動しました。 読み込むファイルをgnuplotを実行している場所と違うところに置いてたらダメなんですね...。 フルパスで指定すればできると思ってました。 そこが間違ってたみたいです。 ありがとうございました。

すると、全ての回答が全文表示されます。