
ここに質問するのは間違っているように思えますが、
プログラマの方だと誰かしらこれと同じ事をやったことがあるのではないかと思い、ここに質問させていただきます。
GNUPLOTというソフトを使って、
(1)ファイルに書き込まれているデータを読み込み、
(2)それをGIFに折れ線グラフで出力させる、
という処理をしたいのですが、なかなかGNUPLOTに関する
情報が少なくて困っています。
ファイルの中身というのは
2001/05 1005
2001/06 1300
2001/07 1080
2001/08 2006
というような、テキストファイルで各列ごとはスペースで区切られています。
これはある一定期間の来場者数をファイリングしたもので、
2001年5月には1005名。2001年6月には1300名......といった感じです。
これをx軸に年月、y軸に人数というように折れ線グラフにして出力させたいのですがどうしたら良いものでしょうか?
コマンド一つ一つ教えていただけると非常にありがたいです。
どうか宜しくお願いいたします。
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/gn …
http://www.linux.or.jp/JF/JFdocs/gnuplot.html
http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplo …
http://infofarm.affrc.go.jp/~kadosawa/gnuplot.htm
http://www.nucl.phys.tohoku.ac.jp/~m_isihar/text …
参考URL:http://art.aees.kyushu-u.ac.jp/members/kawano/gnuplot/,http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplo …
ご丁寧な回答ありがとうございました。
感動しました。
読み込むファイルをgnuplotを実行している場所と違うところに置いてたらダメなんですね...。
フルパスで指定すればできると思ってました。
そこが間違ってたみたいです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) <スプレッドシート>採用進捗 グラフ作成について 3 2022/10/23 15:52
- Excel(エクセル) エクセルまたはgnuplotグラフの書き方 2 2022/11/18 15:45
- Excel(エクセル) エクセルの折れ線グラフで教えて下さい 1 2023/03/05 22:48
- Excel(エクセル) Excelでグラフを作りたいです。散布図でしょうか? 3 2023/02/09 12:48
- 統計学 お世話になっています. x軸は時間(期間)y軸はある値に対する2つのグラフ比較をしますが、私個人の考 2 2023/03/30 11:42
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Illustrator(イラストレーター) ワードに貼った画像のキャンバスと画像本体のサイズの調整 2 2022/05/19 18:31
- CAD・DTP JWW-CADでDXF変換後の線が連動して消える 2 2023/01/13 11:09
- Excel(エクセル) Excelグラフについて 1 2023/05/12 16:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
findstrでヒットした1行前の文...
-
コマンドプロンプトをクリック...
-
フォルダ、ファイル操作に最適...
-
Windowsのバッチ(bat)ファイル...
-
DOSコマンドで指定日数よりも過...
-
コードからアクセス権限の変更
-
make test って何をするための...
-
WSHで他のバッチを呼びその終了...
-
VC++で音量の調整、ミュートは。
-
ファイル一覧を取得できる関数
-
BATファイル作成時の記述に...
-
ftp.exeでproxy経由FTP
-
コンピュータ名をファイル名に...
-
バッチ終了時にDOS窓を閉じるコ...
-
ftpコマンドを実行すると「425 ...
-
MSDOSで容量チェックをしたい!
-
複数のフォルダを開くバッチフ...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
make test って何をするための...
-
シェルの「:コマンドが見つか...
-
コマンドプロンプトをクリック...
-
ftpコマンドを実行すると「425 ...
-
findstrでヒットした1行前の文...
-
ショートカットをデスクトップ...
-
バッチファイルを使ってテキス...
-
Pythonで単純にファイルを結合...
-
フォルダ、ファイル操作に最適...
-
ftpコマンド出力結果の取得
-
シェルスクリプト内のcdで、カ...
-
AccessVBAで実行時間を指定する...
-
powershellでlinuxのduコマンド...
-
SSH接続でwindowsサーバのコマ...
-
FTPの連続実行でフリーズする
-
コマンドプロンプトとCygwinの違い
-
Windowsのバッチ(bat)ファイル...
-
xCopyコマンドでネットワークご...
おすすめ情報