タグ: gnuplot

  • gnuplotのデータプロットで日付を扱う場合

    gnuplotのグラフ出力において横軸を日付にしたい場合で、
    しかも日付データが都合の良い形式になっておらず
    ある程度編集が必要な場合を想定しています。
    ここでは日付を “2011/01/01” のようにスラッシュ区切り、
    0埋めの形式にしてみます。

    例えば日付データが次のような場合

    年、月、日がそれぞれ数値として別々のセルに入っている。
    ※値1、値2はrand()関数で適当な値を並べています。

    後の編集の都合により列を挿入しておきます。

    空白のセル(D2)に次の式を書きます。

    =TEXT(A2,"0000") & "/" & TEXT(B2, "00") & "/" & TEXT(C2, "00")
    

    実際の画面はこのようになります。(LibreOffice Calcの例)

    セルの内容が期待通り “2011/01/01” と表示されたらオートフィル機能により
    必要なところまでドラッグします。

    挿入した列に期待通りの日付がセットされたら、値の列も含めて
    必要な範囲を選択してコピーします。

    そして新しいシートを選択して「形式を指定して貼り付け」
    テキストと数のみにして貼り付けます。

    「名前を付けて保存」します。このときファイルの種類を「テキスト CSV」とします。
    ※Excelの場合は CSV(カンマ区切り)です。適宜読み替えてください。

    これでCSVデータが準備できたので、gnuplotにうつります。
    wgnuplotを起動
    CSVデータを保存したフォルダへ移動します。
    例えば、CSVデータをマイドキュメント内の gnuplot というフォルダに保存した場合。

    gnuplot> cd "C:/Users/(ユーザ名)/Documents/gnuplot"
    

    X軸を日付(time)にセットします。

    gnuplot> set xdata time
    数値形式(numerical)に戻す場合は、
    gnuplot> unset xdata
    または
    gnuplot> set xdata
    

    日付形式をセットします。

    gnuplot> set timefmt "%Y/%m/%d"
    

    オプションの詳細はオンラインドキュメントの
    “Time/Date data”
    の章を参照してください。
    http://www.gnuplot.info/documentation.html
    PDF形式で日本語のドキュメントも用意されているようです。
    次にセパレータをカンマ区切りにセットします。

    gnuplot> set datafile separator ","
    

    ここまでの作業でプロットの準備ができましたので、
    ためしにプロットしてみます。

    gnuplot> plot "datafile.csv" using 1:2 with linespoints;
    


    期待通りのグラフが画面に表示できたらこれを画像ファイルに保存します。

    現在の出力形式は、
    gnuplot> show terminal
    で確認できます。
    png形式で出力する場合は、
    gnuplot> set terminal png
    ちなみに、対応している出力形式の一覧は、
    gnuplot> set terminal
    

    そして、保存先のファイル名を指定します。

    gnuplot> set output "dataplot.png"
    

    これでプロットを実行すれば、出力結果がpng形式で”dataplot.png”に保存されます。

    gnuplot> plot "datafile.csv" using 1:2 with linespoints;
    

    このままだと出力先のファイルがロックされたままになりますので、
    プロットを実行した後は、出力先を元に戻しておきます。

    gnuplot> set terminal wxt
    gnuplot> set output
    
  • gnuplot でデータをプロットしてみる

    gnuplotを使って、総務省の統計データ(人口推計)をグラフにしてみます。

    gnuplotを準備

    gnuplot

    gnuplotのウェブサイトから
    gnuplotをダウンロードして展開します。
    gnuplot/binary というフォルダの中に
    wgnuplot.exe
    というプログラムがありますのでそれを起動。

    フォントの設定

    gnuplotウインドウに表示される文字が読みにくい場合はフォントを設定します。
    ウインドウ内でマウスを右クリックして「Choose Font…」を開く。

    gnuplot – Choose Font

    設定を保存

    フォントの種類やサイズを変更したら、設定内容を保存します。
    上記と同様に、ウインドウ内でマウスを右クリックして「Update … ***.ini」を選択。

    Update … *.ini

    データファイル(CSV形式)を準備

    総務省統計局のウェブサイトからデータ(Excel形式)をダウンロードします。

    男女別人口

    グラフを作成する範囲を選んで編集

    西暦と人口(数値)の必要な部分を選択して、ひとまず別のシートにコピー(貼り付け)
    不要な列を削除します。

    不要な列を削除

    セルのフォーマットを調整

    3桁ごとのカンマ区切りが邪魔になったりしますので、セルのフォーマットを変更して外しておきます。

    セルのフォーマット
    フォーマットの調整後

    CSV形式で保存

    データが整ったらCSV形式で保存します。
    画面はLibreOffice Calcの例です。Excelの場合も同様にCSV形式で保存します。

    CSV形式で保存

    データをプロット

    準備が整いましたのでデータファイルを使ってプロットします。
    gnuplot(wgnuplot.exe)の画面に戻ります。
    gnuplotのプロンプトでデータファイル(CSV形式)を保存したフォルダに移動します。

    gnuplot> cd "/users/(ユーザ名)/documents/gnuplot"
    ※(ユーザ名)は適宜読み替えてください。

    セパレータを変更します。
    デフォルトでは空白(whitespace)になっていますので、カンマに切り換えます。

    gnuplot> set datafile separator ","

    カンマに切り換えないと

     warning: Skipping data file with no valid points
     x range is invalid

    のようなエラーメッセージが表示されます。
    デフォルト(空白区切り)に戻す場合は、

    gnuplot> set datafile separator whitespace

    または

    gnuplot> set datafile separator

    と入力します。その他に、

    タブ区切り

     gnuplot> set datafile separator "\t"

    または他の区切り文字を指定する場合

    gnuplot> set datafile separator "(区切り文字)" 

    そしてプロットを実行します。
    1列目をx軸に、2列目をy軸にする場合。

    gnuplot> plot "datafile.csv" using 1:2 with linespoints;

    1列目をx軸に、3列目と4列目をy軸にする場合。

    gnuplot> plot "datafile.csv" using 1:3 with linespoints, "datafile.csv" using 1:4 with linespoints;

    これで次のようなグラフが出来上がります。

    Gnuplot window