gnuplot:実験データに基づいてグラフを作成する

ごく最近、私はリモートセンサーからの測定値に基づいてグラフを作成する仕事をしました。 特に、気温の経時的な変動に関するデータを処理する必要がありました。 次のように見えました。 リモートセンサーから、情報を含む信号が受信デバイスに送信され、次にコンピューターに送信されてから、Mysqlに書き込まれます。 そして次のステップは、レポート用のグラフの処理と生成でした。 チャートは、いくつかのタイプ-毎日、毎週、毎月-で作成されました。



タスクは難しくありません。いくつかのポイントだけを考慮する必要がありました。 そのため、測定の「ポイント」の間隔は異なる場合があります。 テスト構成でセンサーが2分ごとに測定値を送信した場合、実際の構成では15分間隔で測定値が取得されました。 次に、無線干渉による送信中のパケットが失われる可能性があるため、観測に不均等な間隔がある可能性があるため、値の補間が必要でした。



プロセス全体を自動化する必要があり、スケジュールを作成するタスクは、特別なサーバー(Ubuntuサーバー)のクラウンによって起動されるように計画されました。 グラフ作成ツールとしてgnuplotを選択しました。 このプログラムは非常に便利で、最も重要なのはスクリプトを操作できることで、PNG、EPS、SVGなどのグラフィック形式をサポートしています。 一般的に-あなたが必要なもの。



そのため、「X」に沿って2つの軸を描画する必要がありました-時間の座標(時間単位)を延期し、「Y」に沿って温度値の座標(-40から40)を延期しました。 次に、この座標グリッドで、測定ポイントを曲線で接続して設定します。



例として、gnuplotがどのように機能するかを分析するために、毎日の温度変動のグラフを作成するためのスクリプトを以下に示します。 24時間で。



データを含むファイル-daily.datと呼びましょう。これには、希望する期間の測定値の読み取り値が含まれています。 特定の日。 最初の列は測定の日付と時刻を示し、次の列は温度を示します。

2010-05-12 00:38:11 13

2010-05-12 00:53:42 13

2010-05-12 01:09:13 13

2010-05-12 01:24:45 13








gnuplot命令を含むスクリプトはdaily.gnuと呼ばれます





  1. #! / usr / bin / gnuplot -persist
  2. #出力モードをファイル、PNG形式に設定
  3. #碑文のデフォルトフォントcouri.ttf、サイズ8ピクセル、
  4. #背景グラフィックス白、フォント黒
  5. #グラフィックサイズ640x480px
  6. set term png拡張フォント"/usr/share/fonts/truetype/msttcorefonts/couri.ttf.8" \
  7. xffffff x000000サイズ640,480
  8. set output "/var/graph/images/daily.png"#パスとファイル名を指定
  9. set encoding iso_8859_1#エンコーディングを設定
  10. tmargin 1を設定 #上からインデント
  11. 目盛りを設定 #ダッシュを外側に設定
  12. set size 1.0,1.0#グラフの比率を設定
  13. set nokey#ヘッダーを出力しません
  14. グリッドを設定 #グリッドを表示
  15. set xzeroaxis lt -1#ゼロの線を引きます
  16. yzeroaxisを設定します
  17. #「X」のパラメーター
  18. set xdata time#「X」のデータが時刻になるように設定します
  19. set timefmt "%Y-%m-%d%H:%M:%S" #時間フォーマット
  20. set xtics 7200#ステップ2時間(60 * 60 * 2)
  21. フォーマットを設定しますx "%H" #座標に時間の値(時間)のみを表示します
  22. #「Y」のパラメーター
  23. ytics 5を設定 #ステップ5度
  24. set yrange [-40:40]#-40〜40の値の範囲
  25. format y "{%g} ^ o" #を座標で設定し、値を表示して度で書き込む
  26. #「Y2」のパラメーター
  27. y2range [-40:40]を設定します
  28. y2tics 5を設定
  29. フォーマットy2を設定します"{%g} ^ o"
  30. #行1(行1)のスタイルを設定
  31. #linetypeは線の色を設定します(デフォルト値1、2、3を使用できます...)
  32. #または色を指定-rgb "#409ff1"
  33. #lw-線幅、pt-ポイントタイプ、ps-ポイントサイズ
  34. スタイルライン1を設定 lt rgb "#409ff1" lw 2 pt 3 ps 0.5
  35. #グラフを描く
  36. #データの取得場所を示す-daily.dat
  37. #監視する列-1 を使用 :3
  38. #使用する補間方法を言う-滑らかなcsplines
  39. #使用する線種を指定-線種1
  40. 1 を使用して 「./daily.dat」 プロットします。3つの滑らかなcsplinesラインスタイル1
*このソースコードは、 ソースコードハイライターで強調表示されました。


さて、グラフを生成するために、このスクリプトを使用してgnuplotを実行するのはターミナルにのみあります。

# gnuplot ./daily.gnu





そして、指定された場所「/var/graph/images/daily.png」にファイルが表示されます。





SVGなどでベクターファイルを生成する必要がある場合は、このために数行を変更するだけで済みます。

set term svg enhanced size 640,480 font "/usr/share/fonts/truetype/msttcorefonts/couri.ttf,8"

set output "var/graph/images/daily.svg"






実際の例では、スクリプトとデータを含むファイルは、Python上のスクリプトによって形成され、形成されてから起動されます。 スクリプト自体(daily.gnu)では、チャートの名前の行が変更されるたびに-「daily_2010.05.12.png」、およびdaily.datが毎回新しい値で更新されます。

実際にはそれだけです。



gnuplotの手順の詳細については、 公式Webサイトを参照してください

優れたPDFドキュメント、2Mbもあります



スクリプトのソースデータは、ここからダウンロードできます。

ご清聴ありがとうございました!



All Articles