金子邦彦研究室プログラミングOctave の活用Octave でのグラフ作成

Octave でのグラフ作成

このページでは,Octave でのグラフ作成について, 次のことを行う手順を説明する.

前準備

必要となるソフトウェア

前もって決めておく事項

CSVファイルを読み込み,テーブルに格納

  1. (前準備) 使用する CSV ファイルの作成

    ※ ここでは Book1.csv をダウンロードし,分かりやすいディレクトリに置く

    (参考: 「外国為替データ(時系列データ)の情報源の紹介」の Web ページ

    以下の説明では、

    として説明を続ける.

  2. 使用する CSV ファイルの確認

    属性名として seq, date, USD, EUR, AUD の5つが, CSV ファイルの1行目に書かれていることを確認する.

    [image]
  3. octave の起動

    octave
    
  4. octave におけるパッケージの読み込み

    次のコマンドを実行.

    pkg load io
    

    [image]
  5. read.table」を用いて,CSV ファイルを R のデータフレームに読み込み

    Windows の場合のOctaveコマンドの例

    A = dlmread( "C:\\octave\\Book1.csv", ",/", 1, 0 );
    

    [image]

    ◆ Linux の場合のOctaveコマンドの例

    A = dlmread( "/tmp/Book1.csv", ",/", 1, 0 );
    

    [image]
  6. 変数 A の中身の確認

    例えば,次のコマンドを実行する.これは,Aの2行目と3行目と4行目と5行目と6行目と7行目である.

    A(:,[2 3 4 5 6 7])

    [image]

テーブルからのグラフ作成例

  1. x, y 値を指定しての散布図の作成

    x 値を格納したベクトル,y 値を格納した行列(またはベクトル)を引数として plot() 関数を使うと,散布図が描かれます.

    この場合「A(:,1)」や「A(:,[5 6 7])」という書き方で,A から列を抜き出して,ベクトルや行列を作る.

    ■ 1本の線

    x 値を格納したベクトル,y 値を格納したベクトル

    plot( A(:,5), A(:,6) )
    close
    

    [image]

■ 複数の線

x 値を格納したベクトル,y 値を格納した魚憂うt

plot( A(:,1), A(:,[5 6 7]) )
close

「plot( A(:,1), A(:,5), A(:,1), A(:,6), A(:,1), A(:,7) ) 」のように,X 値と Y値のベクトルを交互に並べたときと同じ結果になる.

[image]

重ね書きの例

「hold on」を実行すると,plot コマンドをいくつか続いて実行したとき,前のグラフが消えないようになる.

平滑化の例


■ 平均

x = [zeros(1,20), ones(1,10), zeros(1,20)]
pkg load signal
plot([1:50], x, [1:50], filtfilt([1 1 1 1 1]/5, 1, x))

[image]

■ Savitsky-Golay 平滑化 (smoothing) フィルタ

x = [zeros(1,20), ones(1,10), zeros(1,20)]
pkg load signal
plot([1:50], x, [1:50], sgoleyfilt(x), [1:50], filtfilt([1 1 1 1 1]/5, 1, x))

[image]

■ Spencer's 15 point moving average

x = [zeros(1,20), ones(1,10), zeros(1,20)]
pkg load signal
plot([1:50], x, [1:50], spencer(x), [1:50], filtfilt([1 1 1 1 1]/5, 1, x))

[image]

「外国為替データ(時系列データ)」の平滑化(例) 「filtfilt ...の部分は,周辺 20 点の平均.

pkg load signal
plot(A(:,1), A(:,5), A(:,1), filtfilt(ones(1,20)/20, 1, A(:,5)))

[image]

タイトル,ラベル,範囲指定,格子

次の関数を使う

凡例

plot( X[,c("seq")], X[,c("USD")] )
lines(lowess( X[,c("seq")], X[,c("USD")] ), col = "red")
lines(lowess( X[,c("seq")], X[,c("USD")], f=0.2 ), col = "green")
legend( 5, 105, c( "f = 2/3", "f = 0.2" ), lty = 1, col = c("red", "green") )

テキストを書くこともできる.

text(locator(1), labels = "ほげほげ")

ファイルへの保存