SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

データを4次元グラフとして表示する.NETアプリケーションの作成

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

  • このエントリーをはてなブックマークに追加

GUIの作成(2)

データファイルの作成

 次に、実際にグラフを表示するデータファイルを作成します。Excelデータは行列になっていますから、グリッド形式のデータファイルを作成します。

 データは、Excelのセルデータをそのままコピーし、グリッド形式であること、行列数、欠損値、XYの増分、グリッドの起点を作成します。

! グリッドには 10*6 のデータ点があります。
! 欠損値は 1000000 です。
! グリッドの X の増分は 1.0、Y の増分は 1.0 です。
! グリッドの起点は X = 0、Y = 0 です。
! 60 個のデータ値が続きます。それぞれのデータ値は各グリッド点に対応します。

GRID 10 6 1000000 1.0 1.0 0 0

2132230	2431560	2653320	2127800	2224450	2653430	2333130	2435430	2115500	2029320
3326780	3435560	3237980	3332240	3124870	3034980	3327760	3653430	3119900	3235920
3654780	3703340	3693670	3652200	3712320	3590900	3625730	3639980	3678400	3662320
4012120	4121210	4215870	4198980	4019980	4003030	4182390	4201910	4116570	4094960
4345540	4299870	4345500	4293260	4099300	4435000	4232010	4332300	4300500	4295980
2909800	2898900	3001000	2998700	2898900	3002300	2879000	2987980	2899790	2994500

 作成したら、「mydata.dat」というファイル名で保存します。単純なテキストファイルで保存してください。

4Dデータの作成

 データファイルができたら、4Dデータを作成する処理をフォームのLoadイベントハンドラに作成します。

 等高線データは、グラフに使用するデータと同じ配列を用意します。値は適当に設定します。そして、その配列をContourDataプロパティに設定します。

 あとは、IsZonedプロパティをTrueにして等高線データを有効にし、NumLevelsプロパティで色数を設定します。例えば、このプロパティの値が「3」だと等高線は3段階に設定され、チャートは3色で塗りつぶされます。

 ColorSetプロパティには等高線のカラーセットを指定します。値はColorSetEnum列挙体のメンバで、以下の値が使用できます。ここでは、「Rainbow(スペクトラムカラー)」を使用しています。

メンバ 解説
BlackRedYellow 黒⇒赤⇒黄の色順序
BlackWhite グレースケールカラー
BluePink 青からピンクまでの色
BlueWhiteRed 青⇒白⇒赤の色順序
Custom カスタムカラーのセット
GreenBlue 緑から青までの色
GreenPurpleYellow 緑⇒紫⇒黄の色順序
Rainbow スペクトラムカラー
RedWhite 赤から白までの色
RevRainbow 逆順のスペクトラムカラー
WhiteBlack 逆順のグレースケールカラー
Visual Basic
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '4次元表示の設定
    Dim contour(6, 10) As Double
    Dim i, j As Integer

    For i = 0 To 6
        For j = 0 To 10
            contour(i, j) = i * j
        Next j
    Next i

    C1Chart3D1.ChartGroups(0).ChartData.ContourData = contour

    'グラフの領域区分を設定   
    C1Chart3D1.ChartGroups(0).Contour.IsZoned = True
    C1Chart3D1.ChartGroups(0).Contour.NumLevels = 20
    C1Chart3D1.ChartGroups.ContourStyles.ColorSet = C1.Win.C1Chart3D.ColorSetEnum.RevRainbow

End Sub
C#
private void c1Chart3D1_Load(object sender, EventArgs e)
{
    //4次元表示の設定
    double[,] contour = new double[7, 11];
    int i, j;

    for(i=0;i<6;i++)
    {
        for(j=0;j<10;j++)
        {
            contour[i, j] = i * j;
        }
    }

    c1Chart3D1.ChartGroups[0].ChartData.ContourData = contour;;

    //グラフの領域区分を設定   
    c1Chart3D1.ChartGroups[0].Contour.IsZoned = true;
    c1Chart3D1.ChartGroups[0].Contour.NumLevels = 20;
    c1Chart3D1.ChartGroups.ContourStyles.ColorSet = C1.Win.C1Chart3D.ColorSetEnum.RevRainbow;

}

ファイルを読み込む処理の作成

 最後に、ファイルを読み込む処理を作成します。データファイルをC1Chart3Dコントロールに設定するには、LoadDataFromFileメソッドを使用します。

 処理は簡単で、「ファイルを開く」ダイアログボックスを表示し、取得したファイル名をLoadDataFromFileメソッドの引数に設定し、メソッドを実行するだけです。

Visual Basic
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    OpenFileDialog1.DefaultExt = "*.dat"
    OpenFileDialog1.FileName = "mydata.dat"

    If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
        Dim fname As String = OpenFileDialog1.FileName
        C1Chart3D1.ChartGroups(0).ChartData.LoadDataFromFile(fname)
    End If

End Sub
C#
private void button1_Click(object sender, EventArgs e)
{
    openFileDialog1.DefaultExt = "*.dat";
    if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        String fname = openFileDialog1.FileName;
        c1Chart3D1.ChartGroups[0].ChartData.LoadDataFromFile(fname);
    }
}

まとめ

 C1Chart3Dコントロールは、本来は3Dグラフを作成するコントロールですが、このように等高線データを加えると、さらに見やすいグラフの作成が可能です。どちらかというと工業系のデータ解析に使われやすいですが、経理や営業のデータでも色要素を加えることで、データの特徴を強調できます。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7688 2014/03/18 18:15

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング