データベース内のレコードを使ってグラフを作成する (例題)

4D - Documentation   Fran溝is   English   German   日本語   4D Chartコマンドテーマリスト   4D Chartインデックス   戻る   Previous   Next

version 6.0 (Modified)


この節では、CT Chart selection 関数と CT Chart data 関数を使用した2次元グラフと3次元グラフの作成例を紹介します。

配列を使用した2次元グラフと3次元グラフの作成方法は、Creating Graphs from Arrays (examples) 節を参照してください。

各項目では、以下の例を説明します。

・例に使用される状況の説明

・サンプルデータベースの構造

・サンプルデータを使用して、すべてメソッドで作成されたグラフ

・サンプルグラフの作成に使用されたコード

フィールドで定義された系列を使って2次元グラフを作成する


あなたがソフトウェア会社を経営し、政府、教育機関、小売りなど、多岐に渡る分野の

顧客を抱えているとします。あなたのデータベースは顧客と営業の履歴を取っています。

データベースでは、以下のテーブルを使用して情報を保存します。

4D Chartを使用して、以下のグラフを生成します。これは、各分野での全営業成績の割合を示したものです。

以下はサンプルグラフを作成するために使用された、GRAPH PROFILEメソッドのコードです。

   `メソッド: GRAPH PROFILE
   `項目: 顧客タイプ
   `数値: 購入された単位の数

   C_LONGINT ($Left;$Top;$Right;$Bottom)
   C_LONGINT ($Area;$Chart;$Title;$Locate)
   C_LONGINT ($Left2;$Top2;$Right2;$Bottom2)

   ??`チャート用のレコード選択を生成
   ALL RECORDS ([Market Data])

   ??`系列データ用のフィールドの配列
   ARRAY LONGINT ($aFields;1)
   $aFields{1}:=フィールド(->[Market Data]NumberOfUnits)

   ??`インターフェース要素を隠す
   CT SET DISPLAY (Area;1;0)??`メニューを隠す
   CT SET DISPLAY (Area;2;0)??`チャートツールを隠す
   CT SET DISPLAY (Area;3;0)??`オブジェクトツールを隠す
   CT SET DISPLAY (Area;6;0)??`スクロールバーを隠す
   CT SET DISPLAY (Area;9;0)??`ルーラーを隠す

   ??`円グラフを作成する
   $Chart:=CT Chart selection (Area;6;1;1;Table (->[Market Data]);2;$aFields)

   ??`10度パイウェッジを移動する#3
   CT EXPLODE PIE (Area;$Chart;2;10)

   ??`凡例を配置する場所を設定する(下, 水平方向)
   CT SET LEGEND ATTRIBUTES (Area;$Chart;1;0;0;0;8;0;0)

   ??`左上隅にチャートタイトルを追加する
   $Title:=CT Draw text (Area;1;1;210;3;"Client Distribution by Sector")

   ??`チャートタイトルをフォーマットする(Osaka, 14ポイント, 太字, 中央揃え, 黒)
   $Color:=CT Index to color (16)
   $Font:=CT Font number ("Palatino")
   CT SET TEXT ATTRIBUTES (Area;$Title;$Font;14;1;$Color;1)

   ??`エリア内のオブジェクトを中央に揃えるためにエリア境界を取得する
   CT GET AREA BOUNDARY (Area;1;$Left;$Top;$Right;$Bottom)

   ??`チャートをウインドウサイズから50ポイント小さく変更する
   CT SIZE (Area;$Chart;$Right-50;$Bottom-50)

   ??`チャートを中央揃えする
   CT GET BOUNDARY (Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Chart;$Locate;$Top2)

   ??`タイトルを中央揃えする
   CT GET BOUNDARY (Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Title;$Locate;$Top2)

   ??`チャートを9ポイント分下げ、タイトルの下に表示されるようにする
   CT GET BOUNDARY (Area;$Chart;$Left;$Top;$Right;$Bottom)
   CT MOVE (Area;$Chart;$Left;$Top+9)

   ??`すべのオブジェクトの選択を解除する
   CT SELECT (Area;-1;0)

フィールドで定義された系列を使って3次元グラフを作成する


例えば、新車の市場におり、データベースを使用して手持ちの金で買える最高の車を決定しようとしています。5台の車に選択を絞り込み、それぞれの車で年間の登録、保険、メンテナンスの経費がいくらかかるかを比べたいと思っています。

以下のテーブルにデータを入力します。

収集した情報を解析するために、3次元グラフで情報をグラフ化することにしました。

4D Chartを使用して、以下のグラフを生成します。

GRAPH CARSメソッドはこのグラフを作成するために使われたものです。このメソッドは、CT Chart selection コマンドを使用します。CT Chart selection 関数を使用するときには、この関数にフィールドの配列を渡します。フィールド名は系列名になり、フィールドの値が数値軸上でグラフ化されます。この例では、Registration、Insurance、Maintenanceの各フィールドは、系列と数値のために使用されています。

以下は、GRAPH CARSメソッドのコードです。

      `メソッド: GRAPH CARS
      `項目: 車種
      `系列: 経費カゴリー
      `数値: 経費

   C_LONGINT ($Left;$Top;$Right;$Bottom)
   C_LONGINT ($Area;$Chart;$Title;$Locate;$i)
   C_LONGINT ($Left2;$Top2;$Right2;$Bottom2)

   ??`チャート用のレコードセレクションを生成する
   ALL RECORDS ([Car Expenses])
   ORDER BY ([Car Expenses];[Car Expenses]Cost;>)

   ??`系列と数値のデータをフィールド配列に入れる
   ARRAY LONGINT ($aFields;3)
   $aFields{1}:=Field (->[Car Expenses]Registration)
   $aFields{2}:=Field (->[Car Expenses]Maintenance)
   $aFields{3}:=Field (->[Car Expenses]Insurance)

   ??`インタフェース要素を隠す
   CT SET DISPLAY (Area;1;0)??`メニューを隠す
   CT SET DISPLAY (Area;2;0)??`チャートツールを隠す
   CT SET DISPLAY (Area;3;0)??`オブジェクトツールを隠す
   CT SET DISPLAY (Area;6;0)??`スクロールバーを隠す
   CT SET DISPLAY (Area;9;0)??`ルーラを隠す

   ??`3D 円グラフを作成する
   $Chart:=CT Chart selection (Area;100;1;1;Table(->[Car Expenses]);1;$aFields)

   ??`スケールを設定する
   CT SET REAL SCALE (Area;$Chart;0;0;0;0;0;3000;500;100)

   ??`凡例は表示しない
   CT SET LEGEND ATTRIBUTES (Area;$Chart;0;0;-1;-1;0;0;0)

   ??`チャートタイトルを追加する
   CT SET TITLE ATTRIBUTES (Area;$Chart;0;3;0;"Car type")
   CT SET TITLE ATTRIBUTES (Area;$Chart;1;0;0;"")??`do not show
   CT SET TITLE ATTRIBUTES (Area;$Chart;2;2;3;"Expense (in dollars)")

   ??`左上隅にタイトルを追加する
   $Title:=CT Draw text (Area;1;1;300;3;"Annual Expenses for Import Sedans")

   ??`タイトルをフォーマットする(Osaka , 14ポイント, 太字, 中央揃え, 黒)
   $Color:=CT Index to color (16)
   $Font:=CT Font number ("Palatino")
   CT SET TEXT ATTRIBUTES (Area;$Title;$Font;14;1;$Color;1)

   ??`1番目の系列の色を緑に設定する
   $Color:=CT Index to color (10)
   CT SET CHART FILL ATTRIBUTES (Area;$Chart;8;100;3;$Color)

   ??`2番目の系列の色を黄に設定する
   $Color:=CT Index to color (2)
   CT SET CHART FILL ATTRIBUTES (Area;$Chart;8;200;3;$Color)

   ??`3番目の系列の色を赤に設定する
   $Color:=CT Index to color (4)
   CT SET CHART FILL ATTRIBUTES (Area;$Chart;8;300;3;$Color)

   ??`すべのプロット矩形用に塗りつぶし属性を設定する
   $Color:=CT Index to color (8)
   For ($i;1;3)
     CT SET CHART FILL ATTRIBUTES (Area;$Chart;1;$i;5;$Color)
   End for 

   ??キスト属性ラベルを設定する(Osaka , 9ポイント, 太字斜体)
   $Font:=CT Font number ("Palatino")
   For ($i;0;2)
     CT SET CHART TEXT ATTRIBUTES (Area;$Chart;4;$i;$Font;9;3;-1)
   End for 

   ??`タイトル用のキスト属性を設定する(Osaka , 12ポイント, 太字)
   $Font:=CT Font number ("Palatino")
   For ($i;0;2)
     CT SET CHART TEXT ATTRIBUTES (Area;$Chart;5;$i;$Font;14;1;-1)
   End for 

   ??`中央揃え用のエリア寸法を取得する
   CT GET AREA BOUNDARY (Area;1;$Left;$Top;$Right;$Bottom)

   ??`チャートをウインドウサイズから50ポイント小さく変更する
   CT SIZE (Area;$Chart;$Right-50;$Bottom-50)

   ??`チャートを中央揃えする
   CT GET BOUNDARY (Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Chart;$Locate;$Top2)

   ??`タイトルを中央揃えする
   CT GET BOUNDARY (Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Title;$Locate;$Top2)

   ??`チャートを9ポイント下げる
   CT GET BOUNDARY (Area;$Chart;$Left;$Top;$Right;$Bottom)
   CT MOVE (Area;$Chart;$Left;$Top+9)

   ??`すべのオブジェクトの選択やめる
   CT SELECT (Area;-1;0)

レコードのデータによって定義された系列を使って2次元グラフを作成する


例えば、教育プログラムの西日本地区担当者であり、該当地区の生徒達の標準テストスコアを別のテスト日付と比較したいと仮定します。

データベースには、テスト日付と出身地にタグが付いて、該当地区の生徒のスコアが保存されています。

4D Chartを使用して、以下のグラフを作成します。

前述のグラフは、GRAPH SCORES 2D メソッドによって作成されています。以下は、GRAPH SCORES 2D メソッドのコードです。

      `メソッド: GRAPH SCORES 2D
      `項目: スト日付
      `系列: メンバーの県
      `数値: ストスコア

   C_LONGINT ($Left;$Top;$Right;$Bottom)
   C_LONGINT ($Left2;$Top2;$Right2;$Bottom2)
   C_LONGINT ($Area;$Chart;$Title;$Locate;$Score;$Color;$Font;$Rect)

   ALL RECORDS ([Test Scores])
   ORDER BY ([Test Scores];[Test Scores]Test Date;>)
   ??`インタフェース要素を隠す
   CT SET DISPLAY (Area;1;0)??`メニューを隠す
   CT SET DISPLAY (Area;2;0)??`チャートツールを隠す
   CT SET DISPLAY (Area;3;0)??`オブジェクトツールを隠す
   CT SET DISPLAY (Area;6;0)??`スクロールバーを隠す
   CT SET DISPLAY (Area;9;0)??`ルーラを隠す

   ??`2D 棒グラフを作成する
   $Chart:=CT Chart data (Area;2;1;1;1;Table (->[Test Scores]);2;4;3)

   ??`水平棒グラフをにする
   ARRAY LONGINT ($aOptions;4)
   $aOptions{1}:=1??`方向: 水平 
   $aOptions{2}:=0??`積み重ねなし
   $aOptions{3}:=0??`重ねるなし
   $aOptions{4}:=50??`間隔= 50%
   CT SET CHART OPTIONS (Area;$Chart;$aOptions)

   ??`軸タイトルを表示する
   CT SET TITLE ATTRIBUTES (Area;$Chart;0;2;3;"Test Date")
   CT SET TITLE ATTRIBUTES (Area;$Chart;2;3;0;"Average Score (in Points)")

   ??`項目軸タイトルをフォーマットする(Osaka , 緑, 太字, 12ポイント)
   $Color:=CT Index to color (16)
   $Font:=CT Font number ("Helvetica")
   CT SET CHART TEXT ATTRIBUTES (Area;$Chart;5;0;$Font;12;3;$Color)

   ??`数値軸タイトルをフォーマットする(MゴシックBBB , 赤, 太字斜体, 12ポイント)
   $Color:=CT Index to color (4)
   $Font:=CT Font number ("Palatino")
   CT SET CHART TEXT ATTRIBUTES (Area;$Chart;5;2;$Font;12;3;$Color)

   ??`凡例位置を下部中央、横方向にする
   CT SET LEGEND ATTRIBUTES (Area;$Chart;1;0;0;0;8;0;0)

   ??`チャートタイトルを左上隅に追加する
   $Title:=CT Draw text (Area;1;1;350;3;"Member State Test Scores")

   ??`チャートタイトルをフォーマットする(MゴシックBBB , 14ポイント, 太字, 中央揃え, 青)
   $Color:=CT Index to color (7)
   $Font:=CT Font number ("Geneva")
   CT SET TEXT ATTRIBUTES (Area;$Title;$Font;14;1;$Color;1)

   ??`カスタムスケールを使用する
   CT SET REAL SCALE (Area;$Chart;0;0;0;0;0;220;20;5)
   ??`中央揃え用に使用するウインドウ寸法を取得する
   CT GET AREA BOUNDARY (Area;1;$Left;$Top;$Right;$Bottom)

   ??`チャートをウインドウサイズから50ポイント小さく変更する
   CT SIZE (Area;$Chart;$Right-50;$Bottom-50)

   ??`チャートを横方向に中央揃えする
   CT GET BOUNDARY (Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Chart;$Locate;$Top2)

   ??`タイトルを横方向に中央揃えする
   CT GET BOUNDARY (Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Title;$Locate;$Top2)

   ??`チャートをタイトルから10ポイント分下げる
   CT GET BOUNDARY (Area;$Chart;$Left;$Top;$Right;$Bottom)
   CT MOVE (Area;$Chart;$Left;$Top+10)

   ??`チャートとタイトルに灰色の矩形で枠組みをする
   $Rect:=CT Draw rectangle (Area;$Left-2;$Top2-2;$Right+2;$Bottom+2+10;0)
   CT SET FILL ATTRIBUTES (Area;$Rect;3;CT Index to color (13))
   CT SET LINE ATTRIBUTES (Area;$Rect;3;CT Index to color (15);1)

   ??`すべのオブジェクトを縦方向に中央揃えする
   CT GET AREA BOUNDARY (Area;1;$Left;$Top;$Right;$Bottom)
   CT GET BOUNDARY (Area;-1;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Bottom-$Top)-($Bottom2-$Top2))/2
   CT MOVE (Area;-1;$Left2;$Locate)

   ??`矩形を背面に送る
   CT SELECT (Area;-1;0)??`すべの選択を解除する
   CT SELECT (Area;$Rect;1)??`矩形を選択する
   CT DO コマンド (Area;24002)??`背面に送る
   CT SELECT (Area;-1;0)??`すべの選択を解除する

   ??`すべのオブジェクトの選択やめる
   CT SELECT (Area;-1;0)

レコードのデータによって定義された系列を使って3次元グラフを作成する


自分の会社の株式が同業他社と比べてどのような動きをしているのかを知りたいと仮定します。各企業の株式の終値を4th Dimensionデータベースで記録する場合もあります。データベースでは、株価は月平均で記録されています。

以下のグラフは、Joe Bob’s Chemicals社の株価を業界の平均と比較しています。グラフ上のデータは何の操作もせずにデータベースから直接取られたものです。

STOCKS CHART メソッドは、データベースから直接取られたフィールド値を使用してグラフを生成します。データベースに格納された値は既に平均として計算されているので、追加の計算を行う必要はありません。代りに日々の値を記録していた場合には、月ごとの平均値を計算し、それを配列に格納してから CT Chart arrays 関数を使用してグラフを作成します。

月ごとの値を平均化する例として、Creating a Two-Dimensional Graph from Arrays の項目を参照してください。

以下は、STOCKS CHART メソッドのコードです。

   ??`メソッド: GRAPH STOCKS
   ??`項目: 月r
   ??`系列: 企業と業界のインデックス
   ??`値: 平均株価

   C_LONGINT ($Left;$Top;$Right;$Bottom)
   C_LONGINT ($Left2;$Top2;$Right2;$Bottom2)
   C_LONGINT ($Area;$Chart;$Title;$Locate;$Font;$Color)

   ??`チャート用のレコード選択を生成する
   ALL RECORDS ([Stock Reports])
   ORDER BY ([Stock Reports];[Stock Reports]Month;>)

   ??`インターフェース要素を隠す
   CT SET DISPLAY (Area;1;0)??`メニューを隠す
   CT SET DISPLAY (Area;2;0)??`チャートツールを隠す
   CT SET DISPLAY (Area;3;0)??`オブジェクトツールを隠す
   CT SET DISPLAY (Area;6;0)??`スクロールバーを隠す
   CT SET DISPLAY (Area;9;0)??`ルーラーを隠す

   ??`3D線グラフを作成する
   $Chart:=CT Chart data (Area;101;2;1;1;Table (->[Stock Reports]);2;1;3)

   ??`スケールのセットアップ
   CT SET REAL SCALE (Area;$Chart;0;0;0;0;5;20;5;1)

   ??`チャートを両方向に0度回転させる
   CT SET 3D VIEW (Area;$Chart;0;0)

   ??`背景のカラーを設定する(グレー)
   CT SET CHART FILL ATTRIBUTES (Area;$Chart;1;1;5;CT Index to color (15))

   ??`系列のカラーを設定する(緑; 赤)
   CT SET CHART FILL ATTRIBUTES (Area;$Chart;8;100;3;CT Index to color (10))
   CT SET CHART FILL ATTRIBUTES (Area;$Chart;8;200;3;CT Index to color (4))

   ??`系列の線のカラーを設定する(緑、赤、4ポイント)
   CT SET CHART LINE ATTRIBUTES (Area;$Chart;8;100;3; CT Index to color (10);4)
   CT SET CHART LINE ATTRIBUTES (Area;$Chart;8;200;3; CT Index to color (4);4)

   ??`チャートキストの属性を設定する(Osaka, 太字、イタリック文字, 12ポイント)
   $Font:=CT Font number ("Palatino")
   $Color:=CT Index to color (16)??`黒
   CT SET CHART TEXT ATTRIBUTES (Area;$Chart;5;0;$Font;12;3;$Color)
   $Color:=CT Index to color (10)??`緑
   CT SET CHART TEXT ATTRIBUTES (Area;$Chart;5;2;$Font;12;3;$Color)

   ??`グラフ軸ラベルを表示する
   CT SET LABEL ATTRIBUTES (Area;$Chart;2;3;0;"$###,##0")
   CT SET LABEL ATTRIBUTES (Area;$Chart;0;3;3;"##/##/##")
   CT SET LABEL ATTRIBUTES (Area;$Chart;1;0;0;"")??`このラベルを隠す

   ??`項目軸と数値軸のタイトルを追加する
   CT SET TITLE ATTRIBUTES (Area;$Chart;0;3;0;"Date")
   CT SET TITLE ATTRIBUTES (Area;$Chart;2;2;3;"Average Stock Price")

   ??`凡例位置を上部中央、横方向に設定する
   CT SET LEGEND ATTRIBUTES (Area;$Chart;1;0;0;0;7;0;0)

   ??`チャートタイトルを左上隅に追加する
   $Title:=CT Draw text (Area;1;1;350;3;"Company Performance vs Industrial
      Indicator")

   ??`チャートタイトルをフォーマットする(Osaka ; 14ポイント; 太字; 中央揃え; 青)
   $Color:=CT Index to color (7)
   $Font:=CT Font number ("Palatino")
   CT SET TEXT ATTRIBUTES (Area;$Title;$Font;14;1;$Color;1)

   ??`エリアのオブジェクトを中央揃えするためにエリア境界を取得する
   CT GET AREA BOUNDARY (Area;1;$Left;$Top;$Right;$Bottom)

   ??`チャートのウインドウサイズを50ポイント少なく再定義する
   CT SIZE (Area;$Chart;$Right-50;$Bottom-50)

   ??`チャートを中央揃えする
   CT GET BOUNDARY (Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Chart;$Locate;$Top2)

   ??`チャートタイトルを中央揃えする
   CT GET BOUNDARY (Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
   $Locate:=(($Right-$Left)-($Right2-$Left2))/2
   CT MOVE (Area;$Title;$Locate;$Top2)

   ??`チャートを10ポイント下げる
   CT GET BOUNDARY (Area;$Chart;$Left;$Top;$Right;$Bottom)
   CT MOVE (Area;$Chart;$Left;$Top+10)

   ??`すべのオブジェクトの選択を解除する
   CT SELECT (Area;-1;0)

参照

配列を使ってグラフを作成する (例題).


4D - Documentation   Fran溝is   English   German   日本語   4D Chartコマンドテーマリスト   4D Chartインデックス   戻る   Previous   Next